Som van twee kolommen in een 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

Probleem: wanneer ik een waarde in Stock_New invoeg en deze alleen uitvoer Stock_New uit te voeren als ik opnieuw dezelfde query uitvoer, worden beide tabellen Stock_New nu bijgewerkt  waarde en voorraad_beschikbaar met vorige waarde. Ik wil dat Stock_New en Stock_Verkrijgbaar gelijktijdig worden bijgewerkt Bellow is Query die ik uitvoer

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

Bellow zijn Screenshots lineair

This is the table before execution

This is the table after first execution

This is the table after second execution

0
In plaats van screenshots, post je je code als tekst .
toegevoegd de auteur Larnu, de bron

7 antwoord

Voor zover ik zie passen berekende kolommen beter in uw geval.

Berekende kolommen zijn eigenlijk virtuele kolommen die niet fysiek zijn   opgeslagen in de tabel, tenzij de kolom is gemarkeerd als GEWOON. Waarden voor   berekende kolommen worden herberekend telkens wanneer er naar wordt verwezen in a   vraag

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

1
toegevoegd

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
toegevoegd

Als u naar een kolom in een UPDATE verwijst, krijgt u de waarde vóór de UPDATE . Dus Stock_New is altijd twee korte in Stock_Available = Stock_Opening + Stock_New . Je moet daar ook de 2 toevoegen.

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

Ook als u literaire nummers hebt, moet u ze niet tussen aanhalingstekens plaatsen. Dat is voor snaren.

0
toegevoegd
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
toegevoegd
beter om te gaan voor de opgeslagen procedure, kan het gegevenstype variëren
toegevoegd de auteur Anjan, de bron

Please try to update like below:

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

U kunt stock_available = stock_opening + stock_new + 2 gebruiken, want SQL telt de eerste waarde, niet de bijgewerkte.

Een eenvoudigere manier is om de kolom Stock_Verkrijgbaar te maken zoals berekend uit de andere twee kolommen:

ALTER TABLE Stock
DROP COLUMN Stock_Available

ALTER TABLE Stock
ADD Stock_Available AS Stock_New + Stock_Opening

Nu hoef je alleen nog maar een update te doen:

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

en Stock_Available wordt automatisch bijgewerkt

0
toegevoegd

wanneer u data update 1, Stock_New = 28, Stock_Opening = 20

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

wanneer u gegevens update 2, Stock_New = 30, Stock_Opening = 20

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

Dus je voegt (+ '2') toe aan

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