Suma a două coloane dintr-un tabel 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

Problema: Când introduc o valoare în Stock_New și o execut doar actualizați Stock_New dacă din nou execut aceeași interogare, acum actualizează ambele tabele Stock_New cu curent  valoare și Stock_Available cu valoarea anterioară. Vreau să actualizeze simultan Stock_New și Stock_Available Mai jos este Interogarea pe care o execut

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

Mai jos sunt capturile de ecran liniar

This is the table before execution

This is the table after first execution

This is the table after second execution

0
Mai degrabă decât capturile de ecran, publicați codul ca text .
adăugat autor Larnu, sursa

7 răspunsuri

Din câte văd, coloanele calculate se potrivesc mai bine în cazul tău.

Coloanele computerizate sunt de fapt coloane virtuale care nu sunt fizic   stocate în tabel, cu excepția cazului în care coloana este marcată PERSISTED. Valorile pentru   coloanele calculate sunt recalculate de fiecare dată când sunt menționate în a   interogare

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

1
adăugat

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
adăugat

Dacă vă referiți la o coloană într-un UPDATE , obțineți valoarea înainte de UPDATE . Deci, Stock_New este întotdeauna două în Stock_Available = Stock_Opening + Stock_New . Trebuie să adăugați și codul 2 .

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

De asemenea, dacă aveți numere literale, nu le includeți în ghilimele simple. Asta e pentru șiruri de caractere.

0
adăugat
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
adăugat
mai bine pentru a merge pentru procedura stocată, tipul de date poate varia
adăugat autor Anjan, sursa

Încercați să actualizați informațiile de mai jos:

UPDATE Stock SET Stock_New = Stock_New + '2', Stock_Available = Stock_Opening + Stock_New + '2' WHERE Med_ID='PANAD223'
0
adăugat

Puteți avea stock_available = stock_opening + stock_new + 2 deoarece SQL contează prima valoare, nu cea actualizată.

O modalitate mai ușoară este de a crea coloana Stock_Available după cum se calculează din celelalte două coloane:

ALTER TABLE Stock
DROP COLUMN Stock_Available

ALTER TABLE Stock
ADD Stock_Available AS Stock_New + Stock_Opening

Acum trebuie doar să faceți o actualizare:

UPDATE Stock Set Stock_New = Stock_New + 2 WHERE Med_ID='PANAD223'

și Stock_Available vor fi actualizate automat

0
adăugat

când actualizați datele 1, Stock_New = 28, Stock_Opening = 20

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

când actualizați datele 2, Stock_New = 30, Stock_Opening = 20

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

Deci, adăugați (+ '2') la

UPDATE Stock SET Stock_New = Stock_New + '2', 
                 Stock_Available = Stock_Opening + Stock_New + '2'
 WHERE Med_ID='PANAD223'
0
adăugat