 |
|
SQL Server MERGE 2 Table อยากให้เช็ค LastEditDate ว่าแถวไหนวันเวลาล่ามากสุดเอาเป็นตัวตั้ง แล้ว Update ใส่แถวตัวที่มีวันเวลาน้อย |
|
 |
|
|
 |
 |
|
SQL Server MERGE 2 Table อยากให้เช็ค LastEditDate ว่าแถวไหนวันเวลาล่ามากสุดเอาเป็นตัวตั้ง แล้ว Update ใส่แถวตัวที่มีวันเวลาน้อย
ตอนนี้ทำได้แค่กำหนดว่า เอาตารางของฐานไหนเป็นตัวตั้งโดยใส่ที่ UPDATE SET ?? = ?? ในตัวอย่างนี้ ผมกำหนดให้ตาราง b เป็นตัวตั้ง แล้ว update ใส่ตาราง a แต่ยังหาวิธีเช็คไม่ได้ว่าถ้าข้อมูลในแถวไหนมี LastEditDateT มากกว่า ให้เป็นตัวตั้ง
ผมก็ไม่ทราบว่าทำถูกวิธีไหม ผมกำลังทำระบบ Sync ครับ อยากให้มันเช็คว่าตัวไหนอัพเดทล่าสุด เอาข้อมูลนั้นไปใส่
Code (SQL Server)
MERGE INTO [dbo].[ITEMS] AS TARGET
USING [PRODUCT].[NARO].[dbo].[ITEMS] AS SOURCE
ON (TARGET .Code=SOURCE.Code)
WHEN NOT MATCHED BY TARGET THEN
INSERT (Code, Name, Unit, CreateDateTime, LastEditDateT, Status)
VALUES (SOURCE.Code, SOURCE.Name, SOURCE.Unit, SOURCE.CreateDateTime, SOURCE.LastEditDateT, SOURCE.Status)
WHEN MATCHED THEN
UPDATE SET a.Code=b.Code,
a.Name=b.Name,
a.Unit=b.Unit,
a.CreateDateTime=b.CreateDateTime,
a.LastEditDateT=b.LastEditDateT,
a.Status=b.Status
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
Tag : .NET, Ms SQL Server 2008, C#
|
ประวัติการแก้ไข 2017-05-01 17:28:07
|
 |
 |
 |
 |
Date :
2017-05-01 16:50:46 |
By :
nPointXer |
View :
734 |
Reply :
1 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ใช้แบบนี้ ไม่รู้ถูกหรือเปล่า การทำงานจะซ้ำซ้อนหรือเปล่า
Code (SQL Server)
MERGE INTO [dbo].[ITEMS] AS TARGET
USING [PRODUCT].[NARO].[dbo].[ITEMS] AS SOURCE
ON (TARGET .Code=SOURCE.Code)
WHEN NOT MATCHED BY TARGET THEN
INSERT (Code, Name, Unit, CreateDateTime, LastEditDateT, Status)
VALUES (SOURCE.Code, SOURCE.Name, SOURCE.Unit, SOURCE.CreateDateTime, SOURCE.LastEditDateT, SOURCE.Status)
WHEN MATCHED AND b.LastEditDateT > a.LastEditDateT THEN
UPDATE SET a.Code=b.Code,
a.Name=b.Name,
a.Unit=b.Unit,
a.CreateDateTime=b.CreateDateTime,
a.LastEditDateT=b.LastEditDateT,
a.Status=b.Status
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
MERGE INTO [PRODUCT].[NARO].[dbo].[ITEMS] AS TARGET
USING [dbo].[ITEMS] AS SOURCE
ON (TARGET .Code=SOURCE.Code)
WHEN NOT MATCHED BY TARGET THEN
INSERT (Code, Name, Unit, CreateDateTime, LastEditDateT, Status)
VALUES (SOURCE.Code, SOURCE.Name, SOURCE.Unit, SOURCE.CreateDateTime, SOURCE.LastEditDateT, SOURCE.Status)
WHEN MATCHED AND b.LastEditDateT > a.LastEditDateT THEN
UPDATE SET a.Code=b.Code,
a.Name=b.Name,
a.Unit=b.Unit,
a.CreateDateTime=b.CreateDateTime,
a.LastEditDateT=b.LastEditDateT,
a.Status=b.Status
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
|
 |
 |
 |
 |
Date :
2017-05-01 17:27:56 |
By :
nPointXer |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|