SQL表中两列的总和
我的任务是,除了p_键和F_键之外,我还有三列SQL表中两列的总和,sql,sql-server,Sql,Sql Server,我的任务是,除了p_键和F_键之外,我还有三列Stock_Opening,Stock_New,Stock_Available。我必须在Stock_New中插入一些值。然后Stock\u期初+Stock\u New将相加,值将进入Stock\u Available 问题:当我在Stock\u New中插入一个值并执行它时,仅更新Stock\u New 如果我再次执行相同的查询,它现在会用当前值更新两个表Stock\u New 值和可用的库存与以前的值。 我希望Stock\u New和Stock\u
Stock_Opening
,Stock_New
,Stock_Available
。我必须在Stock_New
中插入一些值。然后Stock\u期初
+Stock\u New
将相加,值将进入Stock\u Available
问题:当我在Stock\u New
中插入一个值并执行它时,仅更新Stock\u New
如果我再次执行相同的查询,它现在会用当前值更新两个表Stock\u New
值和可用的库存与以前的值。
我希望Stock\u New
和Stock\u可用
同时更新
下面是我正在执行的查询
UPDATE Stock
SET Stock_New = Stock_New + '2',
Stock_Available = Stock_Opening + Stock_New
WHERE Med_ID = 'PANAD223'
下面是截图
请尝试如下更新:
UPDATE Stock SET Stock_New = Stock_New + '2', Stock_Available = Stock_Opening + Stock_New + '2' WHERE Med_ID='PANAD223'
请尝试按以下方式更新:
UPDATE Stock SET Stock_New = Stock_New + '2', Stock_Available = Stock_Opening + Stock_New + '2' WHERE Med_ID='PANAD223'
Stock\u New
在update
完成后用最新值更新。尝试:
UPDATE Stock SET Stock_New = Stock_New + 2 , Stock_Available = Stock_Opening + Stock_New+2 WHERE Med_ID='PANAD223'
Stock\u New
在update
完成后用最新值更新。尝试:
UPDATE Stock SET Stock_New = Stock_New + 2 , Stock_Available = Stock_Opening + Stock_New+2 WHERE Med_ID='PANAD223'
如果引用
更新中的列
,则会在更新
之前获得值。所以Stock\u New
在Stock\u Available=Stock\u Opening+Stock\u New
中总是短两个。您还需要在那里添加2
UPDATE stock
SET stock_new = stock_new + 2,
stock_available = stock_opening + stock_new + 2
WHERE med_id = 'PANAD223';
此外,如果您有数字文字,请不要将它们括在单引号中。这是针对字符串的。如果在
更新中引用列,则在更新之前获得值。所以Stock\u New
在Stock\u Available=Stock\u Opening+Stock\u New
中总是短两个。您还需要在那里添加2
UPDATE stock
SET stock_new = stock_new + 2,
stock_available = stock_opening + stock_new + 2
WHERE med_id = 'PANAD223';
此外,如果您有数字文字,请不要将它们括在单引号中。这是针对字符串的。据我所知,计算列更适合您的情况
计算列实际上是虚拟列,而不是物理列
存储在表中,除非列标记为持久化。价值观
计算列每次在列表中引用时都会重新计算
质疑
请参见据我所知,计算列更适合您的情况
计算列实际上是虚拟列,而不是物理列
存储在表中,除非列标记为持久化。价值观
计算列每次在列表中引用时都会重新计算
质疑
当您更新数据1时,请参见,新库存=28,期初库存=20
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 28
WHERE Med_ID='PANAD223'
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 30
WHERE Med_ID='PANAD223'
数据更新2时,新库存=30,期初库存=20
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 28
WHERE Med_ID='PANAD223'
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 30
WHERE Med_ID='PANAD223'
因此,将(+'2')添加到
当数据更新1时,新库存=28,期初库存=20
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 28
WHERE Med_ID='PANAD223'
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 30
WHERE Med_ID='PANAD223'
数据更新2时,新库存=30,期初库存=20
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 28
WHERE Med_ID='PANAD223'
UPDATE Stock SET Stock_New = 28 + '2',
Stock_Available = 20 + 30
WHERE Med_ID='PANAD223'
因此,将(+'2')添加到
您可以使用stock\u available=stock\u期初+stock\u new+2
,因为SQL计算的是第一个值,而不是更新后的值
一种更简单的方法是创建列Stock_,该列可从其他两列计算得到:
ALTER TABLE Stock
DROP COLUMN Stock_Available
ALTER TABLE Stock
ADD Stock_Available AS Stock_New + Stock_Opening
现在,您只需执行更新:
UPDATE Stock Set Stock_New = Stock_New + 2 WHERE Med_ID='PANAD223'
而可用库存将自动更新您可以使用可用库存=期初库存+新库存+2
,因为SQL计算的是第一个值,而不是更新后的值
一种更简单的方法是创建列Stock_,该列可从其他两列计算得到:
ALTER TABLE Stock
DROP COLUMN Stock_Available
ALTER TABLE Stock
ADD Stock_Available AS Stock_New + Stock_Opening
现在,您只需执行更新:
UPDATE Stock Set Stock_New = Stock_New + 2 WHERE Med_ID='PANAD223'
而Stock_Available将自动更新尝试在同一个update语句中计算Stock_Available字段,在该语句中,您为Stock_new指定了一个新值,它将使用Stock_new的存储值,而不是计算(更新)的值。因此,可用库存将始终比预期的少2。您可以像其他人回答的那样,将+2添加到可用的存量计算中,或者您可以运行两个单独的Update语句
Update语句#1设置新股#新值:
UPDATE Stock
SET Stock_New = Stock_New + 2
WHERE Med_ID = 'PANAD223';
一旦Stock_New有了新值,使用该新值计算可用的Stock_:
UPDATE Stock
SET Stock_Available = Stock_Opening + Stock_New
WHERE Med_ID = 'PANAD223'
尝试在同一Update语句中计算Stock_Available字段,在该语句中,您为Stock_new分配了一个新值,它将使用Stock_new的存储值,而不是计算(更新)的值。因此,可用库存将始终比预期的少2。您可以像其他人回答的那样,将+2添加到可用的存量计算中,或者您可以运行两个单独的Update语句
Update语句#1设置新股#新值:
UPDATE Stock
SET Stock_New = Stock_New + 2
WHERE Med_ID = 'PANAD223';
一旦Stock_New有了新值,使用该新值计算可用的Stock_:
UPDATE Stock
SET Stock_Available = Stock_Opening + Stock_New
WHERE Med_ID = 'PANAD223'
与其截图,不如将代码作为text
发布。与其截图,不如将代码作为text
发布。最好使用存储过程,数据类型可能更适合存储过程,数据类型可能更适合您的建议,下面有人分享了一篇关于计算列规范的文章,并将其描述为虚拟列。这个术语让我感到困惑。我可以将SELECT
与此列一起使用吗?您可以选择该列,如果愿意,可以对其进行合计。您不能插入或更新计算列,主要是因为您不必这样做。SQL为您完成这项工作,它会自动对其他两列求和,您只需更新/插入Stock_New和Stock_Open即可。每次更新新股票或开盘股票时,可用股票也会更新。我想要你建议的东西,下面有人分享了一篇关于计算列规范的文章,并将其描述为虚拟列。这个术语让我困惑。我能用选择这个列吗?你可以选择列,如果你愿意的话,可以做一个总数。您不能插入或更新计算列,主要是因为您不必这样做。SQL为您完成这项工作,它会自动对其他两列求和,您只需更新/插入Stock_New和Stock_Open即可。每次更新新库存或期初库存时,可用库存也将更新。