일별, 월별, 분기별로, 연간으로 판매 데이터 그룹을 생성하는 보고서를 작성하려고합니다. 제가 실행중인 문제는 일상적인 활동이 없다면 월별, 분기 별, 또는 연간 단위로 생성되지 않는다는 것입니다. 데이터가없는 요일에 0을 생성하고 다른 세 그룹을 계속 계산하려면 어떻게해야합니까? 다음은 사용하려는 코드입니다 (그룹으로 포함 된 연도가 아직 없음).일별, 월별, 분기 별, 연도 별 그룹 별 판매 데이터 생성
WITH Summary AS
(SELECT
1 as GRP,
'DAILY' as Label,
O.SnapshotDateKey,
BilledDollars = CASE WHEN SUM(O.DollarsBilled) = 0 THEN 0 ELSE SUM(O.DollarsBilled) END,
BilledMSF = CASE WHEN SUM(O.MsfBilled) = 0 THEN 0 ELSE SUM(O.MsfBilled) END,
BookedDollarsPerMSF = CASE WHEN SUM(O.MsfBilled) = 0 THEN 0 ELSE (SUM(O.DollarsBilled)/SUM(O.MsfBilled)) END,
BilledContribution = CASE WHEN SUM(O.Contribution) = 0 THEN 0 ELSE SUM(O.Contribution) END,
BilledProfit = CASE WHEN SUM(O.Profit) = 0 THEN 0 ELSE SUM(O.Profit) END
FROM
FactInvoiceSummary O
WHERE
O.SnapshotDateKey = 20161230 and O.SalesRepKey = 167
GROUP BY
O.SnapshotDateKey
UNION
SELECT
2 as GRP,
'MTD' as Label,
O.SnapshotDateKey,
BilledDollars = CASE WHEN SUM(O.MTDDollarsBilled) = 0 THEN 0 ELSE (SUM(O.MTDDollarsBilled)) END,
BILLEDMSF = CASE WHEN SUM(O.MTDMsfBilled) = 0 THEN 0 ELSE (SUM(O.MTDMsfBilled)) END,
BookedDollarsPerMSF = CASE WHEN SUM(O.MTDMsfBilled) = 0 THEN 0 ELSE (SUM(O.MTDDollarsBilled)/SUM(O.MTDMsfBilled)) END,
SUM(O.MTDContribution) as BilledContribution,
SUM(O.MTDProfit) as BilledProfit
FROM
FactInvoiceSummary O
WHERE
O.SnapshotDateKey = 20161230 and O.SalesRepKey = 167
GROUP BY
O.SnapshotDateKey
UNION
SELECT
3 as GRP,
'QTD' as Label,
O.SnapshotDateKey,
BilledDollars = CASE WHEN SUM(O.QTDDollarsBilled) = 0 THEN 0 ELSE (SUM(O.QTDDollarsBilled)) END,
BILLEDMSF = CASE WHEN SUM(O.QTDMsfBilled) = 0 THEN 0 ELSE (SUM(O.QTDMsfBilled)) END,
BookedDollarsPerMSF = CASE WHEN SUM(O.QTDMsfBilled) = 0 THEN 0 ELSE (SUM(O.QTDDollarsBilled)/SUM(O.QTDMsfBilled)) END,
SUM(O.QTDContribution) as BilledContribution,
SUM(O.QTDProfit) as BilledProfit
FROM
FactInvoiceSummary O
WHERE
O.SnapshotDateKey = 20161230 and O.SalesRepKey = 167
GROUP BY
O.SnapshotDateKey
)
SELECT * FROM Summary
UNION ALL SELECT NULL, 0,0,0,0,0 WHERE NOT EXISTS (SELECT * FROM Summary)
고마워요!
DB 플랫폼에 태그하십시오. – OldProgrammer
감사합니다. 나는 그렇게했다. –
플랫폼이 동시에 mysql & sql-server입니까? – McNets