|
CREATE TABLE #Tmp_Yb_track (
siShipmentID varchar(30),
pkgTrackingNumber varchar(30) PRIMARY KEY,
place varchar(100),
sdate varchar(50),
docdate varchar(50),
code varchar(5),
type varchar(5),
intro varchar(300),
simplifiedTextDescription varchar(300),
payType varchar(30),
payID varchar(100),
payAmount DECIMAL(18,3),
payCurrency varchar(10),
payPaid BIT,
packageCount int,
serviceCode varchar(5),
serviceLevelCode varchar(5),
serviceDescription varchar(50)
);
INSERT INTO #Tmp_Yb_track VALUES (
'54585947', '54585947', 'HK', '20250711121200', '20250711121200',
'010', 'X', '在途中', '支fu期限。。',
'ICOD', '1SXD3X', 300.000, 'PHP', 0,
1, '566', '065', 'SA'
);
MERGE INTO Yb_track AS Target
USING #Tmp_Yb_track AS Source
ON Target.pkgTrackingNumber = Source.pkgTrackingNumber
WHEN MATCHED AND (
ISNULL(Target.place, '') <> ISNULL(Source.place, '')
OR ISNULL(Target.sdate, '') <> ISNULL(Source.sdate, '')
OR ISNULL(Target.intro, '') <> ISNULL(Source.intro, '')
OR ISNULL(Target.code, '') <> ISNULL(Source.code, '')
)
THEN
UPDATE SET
siShipmentID = Source.siShipmentID,
place = Source.place,
sdate = Source.sdate,
docdate = Source.docdate,
code = Source.code,
type = Source.type,
intro = Source.intro,
simplifiedTextDescription = Source.simplifiedTextDescription,
payType = Source.payType,
payID = Source.payID,
payAmount = Source.payAmount,
payCurrency = Source.payCurrency,
payPaid = Source.payPaid,
packageCount = Source.packageCount,
serviceCode = Source.serviceCode,
serviceLevelCode = Source.serviceLevelCode,
serviceDescription = Source.serviceDescription
WHEN NOT MATCHED
THEN
INSERT (
siShipmentID, pkgTrackingNumber, place, sdate, docdate, code, type, intro,
simplifiedTextDescription, payType, payID, payAmount, payCurrency, payPaid,
packageCount, serviceCode, serviceLevelCode, serviceDescription
)
VALUES (
Source.siShipmentID, Source.pkgTrackingNumber, Source.place, Source.sdate, Source.docdate, Source.code, Source.type, Source.intro,
Source.simplifiedTextDescription, Source.payType, Source.payID, Source.payAmount, Source.payCurrency, Source.payPaid,
Source.packageCount, Source.serviceCode, Source.serviceLevelCode, Source.serviceDescription
);
DROP TABLE #Tmp_Yb_track;
===应用的是超长SQL场景
|
|