SQL表中两列的总和

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

我的任务是,除了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可用
同时更新 下面是我正在执行的查询

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即可。每次更新新库存或期初库存时,可用库存也将更新。