Update Select Case Statement in SQL Server:
15,986
Looks like you'll want to move the condition from the JOIN
to the assignment as a CASE
statement:
UPDATE
PLN_DU_Vendor
SET
PLN_DU_Vendor.StatusID = CASE
WHEN PLN_DU_Vendor.VendorDUQuantity = (D.DespatchQuantity + ISNULL(PLN_DU_Vendor.RFDQuantity, 0))
THEN 2
ELSE 1
END
FROM
PLN_DU_Vendor
INNER JOIN PMT_RFDDetail D ON PLN_DU_Vendor.DUID = D.DUID
INNER JOIN PMT_RFDHeader H ON H.RFDID = D.RFDID AND PLN_DU_Vendor.VendorID = H.VendorID
INNER JOIN PLN_LASCO_Header LH ON LH.LASCOID = H.LASCOID AND LH.ReleaseID = PLN_DU_Vendor.ReleaseID
WHERE
H.RFDID = 10
Author by
thevan
Software Engineering Senior Analyst at Accenture Solutions Private Limited, Chennai, India. Interested in ASP.Net, MVC, Web API, WCF, Web Services, ADO.Net, C#.Net, VB.Net, Entity Framework, MS SQLServer, Angular.js, JavaScript, JQuery, Ajax, HTML and CSS
Updated on July 23, 2022Comments
-
thevan almost 2 years
I have written the below update statement to update the StatusID of the PLN_DU_Vendor table.
UPDATE PLN_DU_Vendor SET PLN_DU_Vendor.StatusID = 2 FROM PLN_DU_Vendor INNER JOIN PMT_RFDDetail D ON PLN_DU_Vendor.DUID = D.DUID INNER JOIN PMT_RFDHeader H ON H.RFDID = D.RFDID AND PLN_DU_Vendor.VendorID = H.VendorID INNER JOIN PLN_LASCO_Header LH ON LH.LASCOID = H.LASCOID AND LH.ReleaseID = PLN_DU_Vendor.ReleaseID AND PLN_DU_Vendor.VendorDUQuantity = (D.DespatchQuantity + ISNULL(PLN_DU_Vendor.RFDQuantity, 0)) WHERE H.RFDID = 10
If the condition
PLN_DU_Vendor.VendorDUQuantity = (D.DespatchQuantity + ISNULL(PLN_DU_Vendor.RFDQuantity, 0))
fails, I need to update the StatusID as 1. How to do this in the same update select statement.