I’m trying to perform the below code which I have found it in a thread here
UPDATE MyGuests SET lastname = 'Doe' WHERE id = 2 IF ROW_COUNT() = 0 INSERT INTO MyGuests (lastname, id) VALUES ('Doe', 2)
The problem is that I need to do the same thing but with the SQL Server query.
My main thought here is that if the new read has the same BoxNo
and the same SSCC
and the same StyleBarcode
, then the value in Qty
column will be updated by +1. Otherwise, it’ll make a new insert.
I’m thinking to make something like the following code:
UPDATE MyTable SET Qty = Qty + 1 WHERE BoxNo = 1 AND SSCC = 15210049000887900 AND StyleBarcode = 5210132138457 IF ROW_COUNT() = 0 INSERT INTO MyTable (SSCC, StyleBarcode, Qty) VALUES (15210049000887900, 5210132138457, 1)
But I couldn’t make it because I don’t have something like the ROW_COUNT()
in SQL Server.
Or I don’t know if you can make have it done in another way?
Thanks in advance.
My table:
Advertisement
Answer
SQL Server implements the merge
syntax, which seems relevant for your use case.
This statement lets you insert
or update
from one table into a given table , according to well-defined predicates.
For your question, that would be:
merge mytable as t using (values (15210049000887900,5210132138457,1)) as s(sscc, styleBarcode, qty) on (t.sscc = s.sscc and t.styleBarcode = s.styleBarcode) when matched then update set t.qty = t.qty + 1 -- or t.qty = t.qty + s.qty? when not matched then insert(sscc,styleBarcode,qty) values(s.sscc, s.styleBarcode, s.qty) ;