UPDATE a
SET a.isBeiKu = Isnull(b.isBeiKu, 0),
a.bhnum = Isnull(b.bhnum, 0),
a.daysNum = Isnull(b.daysNum, 0),
a.zhanyong = Isnull(b.zhanyong, 0),
a.IsActive = Isnull(b.IsActive, 0),
a.StopAndNullStockProduct = Isnull(b.StopAndNullStockProduct, 0)
FROM RB_Amazon_Product_Base a (nolock)
INNER JOIN (SELECT rpo.CustomerID,--商户号
rpo.OrderSourceID,--订单渠道来源
rpo.OrderSourceSKUID,--RB_Product_OrderSourceSKU 主键ID
CASE
WHEN Isnull(rpo.AvgDailySales, 0) <= 0 THEN
CASE
WHEN Isnull(rpo.KykcNum, 0) > 0
AND ( rpo.msaleNum < rpo.lastmsaleNum
OR rpo.WeekSaleNum < ( rpo.TwoWeekSaleNum - rpo.WeekSaleNum ) ) THEN 2
ELSE 0
END
WHEN Isnull(rpo.AvgDailySales, 0) <= Isnull(cs.StockupEstimated, 0.5)
OR ( cs.StockupEstimated = 0
AND rpo.AvgDailySales <= 0.5 ) THEN 0
WHEN ( rpo.KykcNum + rpo.cgzNum + rpo.ystzNum - 0 ) / rpo.AvgDailySales < ( rpo.HaulageTime + rpo.BuyTime + Isnull(rpo.SafetyDays, 0) ) THEN 1
ELSE 0
END AS isBeiKu,--是否需备货
CASE
WHEN rpo.AvgDailySales <= 0 THEN 0
WHEN rpo.AvgDailySales <= 0.5 THEN 0
WHEN ( rpo.KykcNum + rpo.cgzNum + rpo.ystzNum - 0 ) / rpo.AvgDailySales < ( rpo.HaulageTime + rpo.BuyTime + rpo.SafetyDays ) THEN rpo.AvgDailySales * rpo.AddCycle
ELSE 0
END AS bhnum,--备货数量
Isnull(Isnull(rpo.KykcNum, 0) + Isnull(rpo.cgzNum, 0) + Isnull(rpo.ystzNum, 0), 1) / ( CASE
WHEN rpo.AvgDailySales <= 0 THEN 1
ELSE rpo.AvgDailySales
END ) AS daysNum,
Isnull(( CASE
WHEN Isnull(rpo.LastBuyPrice, 0) > 0 THEN Isnull(rpo.LastBuyPrice, 0)
ELSE Isnull(rpo.LastSupplierPrice, 0)
END ) * ( Isnull(rpo.KykcNum, 0) + Isnull(rpo.cgzNum, 0) + Isnull(rpo.ystzNum, 0) ), 0) AS zhanyong,--占用金额
( CASE
WHEN Isnull(rpo.AvgDailySales, 0) > 0 THEN
CASE
WHEN Isnull(rpo.KykcNum, 0) / Isnull(rpo.AvgDailySales, 0) > Isnull(RB_Customer_Setting.AmazonSoldOutDay, 60) THEN 0
ELSE 1
END
WHEN Isnull(Datediff(DAY, rpo.LastUPdateTime, Getdate()), 0) > Isnull(RB_Customer_Setting.AmazonStoreAgeDay, 60) THEN 0
ELSE 1
END ) AS IsActive,--活跃、呆滞
CASE
WHEN rpo.StopProduct = 2
AND rpo.KykcNum = 0 THEN 1
ELSE 0
END AS StopAndNullStockProduct--停产并且无库存产品
FROM RB_Amazon_Product_Base rpo(nolock)
LEFT OUTER JOIN dbo.RB_OrderSource AS ros WITH (NOLOCK)
ON ros.ID = rpo.OrderSourceID
AND rpo.CustomerID = ros.CustomerID AND rpo.IsDelete = 0
LEFT OUTER JOIN dbo.RB_Customer_Setting WITH (NOLOCK)
ON dbo.RB_Customer_Setting.CustomerID = rpo.CustomerID
LEFT OUTER JOIN dbo.RB_OrderSource_EbayAmazonAPI AS roe WITH (NOLOCK)
ON roe.OrderSourceID = rpo.OrderSourceID
AND roe.CustomerID = rpo.CustomerID
LEFT JOIN RB_Customer_Setting cs (nolock)
ON cs.CustomerID = rpo.CustomerID
WHERE rpo.OrderSourceSKUID > 0 and rpo.IsDelete=0
AND ros.OrderSourceType = 1
AND ros.IsActive = 1) b
ON a.CustomerID = b.CustomerID
AND a.OrderSourceID = b.OrderSourceID
AND a.OrderSourceSKUID = b.OrderSourceSKUID
WHERE a.OrderSourceSKUID > 0
AND a.OrderSourceSKUID IN( SELECT CONVERT(INT, item) FROM Charsplitforin(@orderSourceSKUIDs, ',') )
AND NOT ( Isnull(a.isBeiKu, -1) = Isnull(b.isBeiKu, 0)
AND Isnull(a.bhnum, -1) = Isnull(b.bhnum, 0)
AND Isnull(a.daysNum, -1) = Isnull(b.daysNum, 0)
AND Isnull(a.zhanyong, -1) = Isnull(b.zhanyong, 0)
AND Isnull(a.IsActive, -1) = Isnull(b.IsActive, 0)
AND Isnull(a.StopAndNullStockProduct, -1) = Isnull(b.StopAndNullStockProduct, 0) )
建议优化为:临时表#tabSkuid最好改成表值参数
declare @orderSourceSKUIDs varchar(max)= '983357051,983301464,982266385,982266403,983267331,984633065,982029572,982225730,982257871,982289695,982302191,983168803,983212867,987449731,907370684,955480133,982212281,982224205,982224852,982232576,982246039,982250223,982265145,982321462,982321599,982321613,982321781,982321794,982322139,985419411,941667916,941668458,941668552,941668572,941668607,941668646,941668721,941949102,941949220,941949263,941949277,976080976,982261100,982266648,982350588,983262026,984031398,985271665,985271645,985271641,985271618,985271615,1075185950,1721186310,1736364597,1753427107,1765837102,1783921715,1826218536,1835234785,1838550795,1839090890,941949311,941949316,941949349,941949366,941949522,941949563,941949574,941949600,941949607,941949613,943115760,943116029,943116054,943116069,943116075,943116079,943116115,943116120,943116129,943116134,943116165,943116196,943116203,943116211,945910172,945910427,945910456,945910478,948088825,968074454,968074484,968074611,968075745,968077878,968077898,968077946,968077993,968078621,968079979,968080554,968082053,968082077,968082203,1063883789,1063884145,1063884152,1071514660,1073171590,1078259120,1153030354,1153030343,1153030362,1199440024,1200118075,1200118188,1200118245,1200118264,1200118296,1201188342,1205015187,1482803366,1731174098,1736398997,1740693360,1072250770,1072250959,1072251065,1072251151,1072251276,1072251301,1072251420,1072251506,1072251501,1072251652,1072251648,1072251799,1072252075,1072252105,1072252280,1072252532,1072252578,1072252740,1072252869,1072252998,1072253046,1072253199,1072253474,1073928407,1075001014,1075045992,1075130789,1086757477,1086757537,1086757662,1086757719,1086757733,1086757785,1086757798,1086757807,1086757861,1086757872,1086757904,1086757940,1090229903,1090425686,1090425781,1090425807,1090425831,1090425855,1090425870,1090425907,1090425930,1090425945,1090425967,1090425980,1090425992,1090426022,1090426052,1090426073,1090426112,1090889130,1093604925,1094190719,1094652379,1106503452,1106510221,1106510238,1106510254,1106510289,1106510335,1106510363,1106510404,1106510435,1106510450,1106510465,1114408795,1114687238,1120060941,1152770074,1163563845,1164759027,1164759390,1164759990,1164760924,1164761223,1164762088,1192898279,1205216686,1206346727,1206347844,1677758904,1678281668,1681084730,1681190030,1681239179,1746363341,1751491024,1753079869,1772845848,1772845866,1772845872,1772845891,1772845918,1772845930,1772845933,1772845936,1772845937,1772845939,1772845941,1772845944,1772845945,1772845947,1772845949,1820459890,1820460049,1820460057,1820460178,1820460187,1820460332,1820460412,1820460522,1820460528,1820460538,1820460550,1820460562,1820460571,1820460576,1820460681,1830902439,1838286085,1867760853,1872769703,1036355518,1036355551,1036355556,1036355559,1036355560,1036355566,1036355569,1036355574,1036355576,1036355578,1036355581,1036355588,1036355596,1041714226,1046586814,1046586862,1046586868,1046586873,1046586880,1046586887,1046586893,1046586898,1046586909,1046586916,1046586929,1046586936,1046586944,1059778181,1065619133,1065619150,1065619158,1075437225,1080817387,1088372410,1090660693,1092187727,1092188024,1092188241,1092188274,1092188413,1092189101,1092189397,1092189433,1092189465,1092189530,1092189562,1092189621,1093698004,1093698340,1093698665,1093699216,1093700161,1093700776,1093700814,1093700848,1093701002,1097914928,1098351625,1098673952,1099888638,1099896530,1099896692,1099896978,1099897004,1099897043,1099897080,1099897127,1099897161,1099897197,1100629903,1100633076,1100633303,1100633339,1100633390,1100633435,1100633476,1100633516,1100633549,1100633636,1100633797,1100633834,1100634035,1100634070,1100634278,1100634519,1114912345,1116860713,1118243293,1118243439,1118243501,1118243726,1118243774,1118243890,1118243910,1118243961,1118243998,1118244113,1118899059,1128624168,1128624145,1128624229,1128624218,1128626734,1128626780,1128626774,1128626762,1128709077,1128761447,1128761512,1128761529,1128761520,1128761527,1128761522,1128761547,1128761549,1128761555,1128761545,1128761557,1128761558,1156436023,1156449862,1156450229,1156450695,1156451200,1156451252,1156451318,1156451407,1156451448,1156451496,1156451542,1156451585,1156451882,1156451920,1156451963,1156451998,1156452044,1156452342,1163299893,1203160165,1203161154,1203161166,1203161209,1203161416,1203161471,1203161498,1203161524,1203161534,1203161576,1300988174,1300988491,1301620428,1302500876,1302872525,1302880716,1303774621,1329563995,1335332579,1337105189,1337582763,1481979126,1681254299,1681259891,1681294188,1681862856,1681886755,1681970130,1682088755,1682354426,1682639017,1682745505,1682752335,1682752768,1682754479,1682759946,1682800601,1682800995,1682801193,1689134238,1691004753,1695049888,1709615952,1709952740,1709973482,1710076791,1710232421,1712914769,1713199081,1714087078,1714368798,1714369054,1714369189,1714369469,1714369605,1714383672,1714947998,1715012569,1715576093,1715576501,1716717946,1716762871,1717283466,1717283577,1721563049,1722865720,1729594922,1729595046,1729595226,1746259186,1765925462,1779048426,1780972325,1784887133,1784887279,1784887450,1785071100,1786286107,1786685500,1788264115,1788791853,1788925759,1796635836,1798223090,1798223550,1801973427,1801974178,1802615311,1803511716,1806279746,1818336296,1830781746,1830904929,1830986478,1838588212,1839640288,1844818988,1858949352,1861607351,1861647506,1861607478,1877599278,1878808138,1884048683,1887379896,1894381694,1894383049,1894381505';
drop table if exists #tabSkuid;
create table #tabSkuid(id int);
insert into #tabSkuid
exec proc_string_split @orderSourceSKUIDs,',';
create index idx_id on #tabSkuid(id);
UPDATE a
SET a.isBeiKu = Isnull(b.isBeiKu, 0),
a.bhnum = Isnull(b.bhnum, 0),
a.daysNum = Isnull(b.daysNum, 0),
a.zhanyong = Isnull(b.zhanyong, 0),
a.IsActive = Isnull(b.IsActive, 0),
a.StopAndNullStockProduct = Isnull(b.StopAndNullStockProduct, 0)
FROM RB_Amazon_Product_Base a (nolock)
INNER JOIN (SELECT
rpo.id,
rpo.CustomerID,--商户号
rpo.OrderSourceID,--订单渠道来源
rpo.OrderSourceSKUID,--RB_Product_OrderSourceSKU 主键ID
CASE
WHEN Isnull(rpo.AvgDailySales, 0) <= 0 THEN
CASE
WHEN Isnull(rpo.KykcNum, 0) > 0
AND ( rpo.msaleNum < rpo.lastmsaleNum
OR rpo.WeekSaleNum < ( rpo.TwoWeekSaleNum - rpo.WeekSaleNum ) ) THEN 2
ELSE 0
END
WHEN Isnull(rpo.AvgDailySales, 0) <= Isnull(cs.StockupEstimated, 0.5)
OR ( cs.StockupEstimated = 0
AND rpo.AvgDailySales <= 0.5 ) THEN 0
WHEN ( rpo.KykcNum + rpo.cgzNum + rpo.ystzNum - 0 ) / rpo.AvgDailySales < ( rpo.HaulageTime + rpo.BuyTime + Isnull(rpo.SafetyDays, 0) ) THEN 1
ELSE 0
END AS isBeiKu,--是否需备货
CASE
WHEN rpo.AvgDailySales <= 0 THEN 0
WHEN rpo.AvgDailySales <= 0.5 THEN 0
WHEN ( rpo.KykcNum + rpo.cgzNum + rpo.ystzNum - 0 ) / rpo.AvgDailySales < ( rpo.HaulageTime + rpo.BuyTime + rpo.SafetyDays ) THEN rpo.AvgDailySales * rpo.AddCycle
ELSE 0
END AS bhnum,--备货数量
Isnull(Isnull(rpo.KykcNum, 0) + Isnull(rpo.cgzNum, 0) + Isnull(rpo.ystzNum, 0), 1) / ( CASE
WHEN rpo.AvgDailySales <= 0 THEN 1
ELSE rpo.AvgDailySales
END ) AS daysNum,
Isnull(( CASE
WHEN Isnull(rpo.LastBuyPrice, 0) > 0 THEN Isnull(rpo.LastBuyPrice, 0)
ELSE Isnull(rpo.LastSupplierPrice, 0)
END ) * ( Isnull(rpo.KykcNum, 0) + Isnull(rpo.cgzNum, 0) + Isnull(rpo.ystzNum, 0) ), 0) AS zhanyong,--占用金额
( CASE
WHEN Isnull(rpo.AvgDailySales, 0) > 0 THEN
CASE
WHEN Isnull(rpo.KykcNum, 0) / Isnull(rpo.AvgDailySales, 0) > Isnull(RB_Customer_Setting.AmazonSoldOutDay, 60) THEN 0
ELSE 1
END
WHEN Isnull(Datediff(DAY, rpo.LastUPdateTime, Getdate()), 0) > Isnull(RB_Customer_Setting.AmazonStoreAgeDay, 60) THEN 0
ELSE 1
END ) AS IsActive,--活跃、呆滞
CASE
WHEN rpo.StopProduct = 2
AND rpo.KykcNum = 0 THEN 1
ELSE 0
END AS StopAndNullStockProduct--停产并且无库存产品
FROM RB_Amazon_Product_Base rpo(nolock)
inner join #tabSkuid t on rpo.OrderSourceSKUID=t.id
LEFT OUTER JOIN dbo.RB_OrderSource AS ros WITH (NOLOCK)
ON ros.ID = rpo.OrderSourceID
AND rpo.CustomerID = ros.CustomerID AND rpo.IsDelete = 0
LEFT OUTER JOIN dbo.RB_Customer_Setting WITH (NOLOCK)
ON dbo.RB_Customer_Setting.CustomerID = rpo.CustomerID
LEFT OUTER JOIN dbo.RB_OrderSource_EbayAmazonAPI AS roe WITH (NOLOCK)
ON roe.OrderSourceID = rpo.OrderSourceID
AND roe.CustomerID = rpo.CustomerID
LEFT JOIN RB_Customer_Setting cs (nolock)
ON cs.CustomerID = rpo.CustomerID
WHERE rpo.OrderSourceSKUID > 0 and rpo.IsDelete=0
AND ros.OrderSourceType = 1
AND ros.IsActive = 1) b
ON a.id=b.ID
WHERE a.OrderSourceSKUID > 0
--AND a.OrderSourceSKUID IN( SELECT CONVERT(INT, item) FROM Charsplitforin(@orderSourceSKUIDs, ',') )
AND NOT ( Isnull(a.isBeiKu, -1) = Isnull(b.isBeiKu, 0)
AND Isnull(a.bhnum, -1) = Isnull(b.bhnum, 0)
AND Isnull(a.daysNum, -1) = Isnull(b.daysNum, 0)
AND Isnull(a.zhanyong, -1) = Isnull(b.zhanyong, 0)
AND Isnull(a.IsActive, -1) = Isnull(b.IsActive, 0)
AND Isnull(a.StopAndNullStockProduct, -1) = Isnull(b.StopAndNullStockProduct, 0) )
1.已按系统部提供的解决方案优化更新SQL
2.已通过跳板机执行定时服务通过测试,定时服务名称:(更新销量、运输途中、采购中、库存、更新销售渠道日销量和SKU日销量)Task_Amazon_TransportStatistics