Сума двух слупкоў у табліцы 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 абнаўленне адначасова Бельи запыты, што я м выканання

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
Замест таго, скрыншоты, размясціць свой код як тэкст .
дададзена аўтар Larnu, крыніца

7 адказы

Наколькі я бачу, якія вылічаюцца слупкі лепш падыходзіць у вашым выпадку.

<�Р> вылічае слупкі фактычна з'яўляюцца віртуальнымі слупкі, якія не зьяўляюцца фізічна   захоўваецца ў табліцы, калі слупок ня адзначаны PERSISTED. значэння   якія вылічаюцца слупкі пералічваюцца кожны раз, калі яны спасылаюцца ў   запыту </р>

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
дададзена