|
| 1 | +drop table if exists dbo.category; |
| 2 | +CREATE TABLE dbo.category ( |
| 3 | + category_id INT PRIMARY KEY, |
| 4 | + category_name VARCHAR(255) NOT NULL, |
| 5 | + amount DECIMAL(10 , 2 ) |
| 6 | +); |
| 7 | + |
| 8 | +INSERT INTO dbo.category(category_id, category_name, amount) |
| 9 | +VALUES(1,'Children Bicycles',15000), |
| 10 | + (2,'Comfort Bicycles',25000), |
| 11 | + (3,'Cruisers Bicycles',13000), |
| 12 | + (4,'Cyclocross Bicycles',10000); |
| 13 | + |
| 14 | +drop table if exists dbo.category_staging; |
| 15 | +CREATE TABLE dbo.category_staging ( |
| 16 | + category_id INT PRIMARY KEY, |
| 17 | + category_name VARCHAR(255) NOT NULL, |
| 18 | + amount DECIMAL(10 , 2 ) |
| 19 | +); |
| 20 | + |
| 21 | +INSERT INTO dbo.category_staging(category_id, category_name, amount) |
| 22 | +VALUES(1,'Children Bicycles',15000), |
| 23 | + (3,'Cruisers Bicycles',13000), |
| 24 | + (4,'Cyclocross Bicycles',20000), |
| 25 | + (5,'Electric Bikes',10000), |
| 26 | + (6,'Mountain Bikes',10000); |
| 27 | + |
| 28 | + |
| 29 | +go |
| 30 | + |
| 31 | +--Do the merge |
| 32 | +MERGE dbo.category t |
| 33 | + USING dbo.category_staging s |
| 34 | +ON (s.category_id = t.category_id) |
| 35 | +WHEN MATCHED |
| 36 | + THEN UPDATE SET |
| 37 | + t.category_name = s.category_name, |
| 38 | + t.amount = s.amount |
| 39 | +WHEN NOT MATCHED BY TARGET |
| 40 | + THEN INSERT (category_id, category_name, amount) |
| 41 | + VALUES (s.category_id, s.category_name, s.amount) |
| 42 | +WHEN NOT MATCHED BY SOURCE |
| 43 | + THEN DELETE; |
| 44 | + |
| 45 | +go |
| 46 | + |
| 47 | +--Do the exact same statement (cut/pasted) |
| 48 | +MERGE dbo.category t |
| 49 | + USING dbo.category_staging s |
| 50 | +ON (s.category_id = t.category_id) |
| 51 | +WHEN MATCHED |
| 52 | + THEN UPDATE SET |
| 53 | + t.category_name = s.category_name, |
| 54 | + t.amount = s.amount |
| 55 | +WHEN NOT MATCHED BY TARGET |
| 56 | + THEN INSERT (category_id, category_name, amount) |
| 57 | + VALUES (s.category_id, s.category_name, s.amount) |
| 58 | +WHEN NOT MATCHED BY SOURCE |
| 59 | + THEN DELETE; |
| 60 | +go |
0 commit comments