Сума двох стовпців у таблиці SQL

My assignment is that i have Three columns Stock_Opening,Stock_New,Stock_Available apart from P_Key and F_key.I have to insert some value in Stock_New. Then Stock_Opening + Stock_New will add up and value will go into Stock_Available

Проблема: Коли я вставляю значення в Stock_New і виконую його, оновіть Stock_New якщо я знову виконаю той же запит, тепер оновить обидві таблиці Stock_New поточними  значення та Stock_Available з попереднім значенням. Я хочу, щоб Stock_New і Stock_Available оновити одночасно Нижче наведено запит, який виконується i

UPDATE Stock
SET Stock_New = Stock_New + '2',
    Stock_Available = Stock_Opening + Stock_New
WHERE Med_ID = 'PANAD223'

Нижче наведено Скріншоти лінійно

This is the table before execution

This is the table after first execution

This is the table after second execution

0
Замість того, щоб зробити скріншоти, напишіть свій код як text .
додано Автор Larnu, джерело

7 Відповіді

Наскільки я бачу, обчислені стовпці краще підходять у вашому випадку.

Обчислені стовпці фактично є віртуальними стовпцями, які фізично не є   зберігається в таблиці, якщо стовпець не позначено PERSISTED. Значення для   обчислені стовпці перераховуються кожного разу, коли вони посилаються на a   запит

see https://www.c-sharpcorner.com/article/computed-columns-in-sql-server/

1
додано

Stock_New is updated with latest value after update is finished. Try:

UPDATE Stock SET Stock_New = Stock_New + 2 , Stock_Available = Stock_Opening + Stock_New+2 WHERE Med_ID='PANAD223'
0
додано

Якщо ви звернетеся до стовпця в UPDATE , ви отримаєте значення до UPDATE . Отже, Stock_New завжди є двома короткими у Stock_Available = Stock_Opening + Stock_New . Тут потрібно також додати 2 .

UPDATE stock
       SET stock_new = stock_new + 2,
           stock_available = stock_opening + stock_new + 2
       WHERE med_id = 'PANAD223';

Крім того, якщо у вас є літерали чисел, не вкладайте їх у одинарні лапки. Це для рядків.

0
додано
create proc sampleupdate
as
begin
declare @stocknew int,
declare @stockopening int 

set @stocknew=(select Stock_New from Stock (condition))
set @stockopening=(select Stock_Opening  from Stock (condition))

set @[email protected] +'2'
UPDATE Stock SET Stock_New [email protected], Stock_Available = @stockopening + @sn WHERE 
Med_ID='PANAD223'
end
0
додано
краще перейти до збереженої процедури, тип даних може змінюватися
додано Автор Anjan, джерело

Спробуйте оновити, як показано нижче:

UPDATE Stock SET Stock_New = Stock_New + '2', Stock_Available = Stock_Opening + Stock_New + '2' WHERE Med_ID='PANAD223'
0
додано

Ви можете мати stock_available = stock_opening + stock_new + 2 як SQL рахує перше значення, а не оновлене.

Більш простим способом є створення стовпця Stock_Available, як обчислено з двох інших стовпців:

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 автоматично оновиться

0
додано

при оновленні даних 1, Stock_New = 28, Stock_Opening = 20

UPDATE Stock SET Stock_New = 28 + '2', 
                 Stock_Available = 20 + 28
 WHERE Med_ID='PANAD223'

при оновленні даних 2, Stock_New = 30, Stock_Opening = 20

UPDATE Stock SET Stock_New = 28 + '2', 
                 Stock_Available = 20 + 30
 WHERE Med_ID='PANAD223'

Таким чином, ви додаєте (+ '2') до

UPDATE Stock SET Stock_New = Stock_New + '2', 
                 Stock_Available = Stock_Opening + Stock_New + '2'
 WHERE Med_ID='PANAD223'
0
додано