針對每個經銷商在各縣市的兩類客戶(CustChannelID 1027、1028),依銷量排序取前 10% 的客戶進行電話調查。
SELECT DISTINCT
b.OrgID, b.CompanyID, b.AreaID, b.CustChannelID, b.CustID, b.SaleTotalQty,
GETDATE()
FROM KDS400TelSurveyCustAll_Temp AS tmp1
CROSS APPLY (
SELECT TOP 10 PERCENT *
FROM KDS400TelSurveyCustAll_Temp tmp2
WHERE tmp1.OrgID = tmp2.OrgID
AND tmp1.CompanyID = tmp2.CompanyID
AND tmp1.AreaID = tmp2.AreaID
AND tmp1.CustChannelID = tmp2.CustChannelID
AND tmp2.CustChannelID IN (1027, 1028)
ORDER BY tmp2.OrgID, tmp2.CompanyID, tmp2.AreaID, tmp2.AreaType, tmp2.CustChannelID
) AS b;
tmp1.OrgID),實現「分組後取 Top N」的邏輯。APPLY。OrgID, CompanyID, AreaID, CustChannelID 建立複合索引,並確保統計資料最新。ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) 配合 CTE 達成相同目的。