私は、売上データの4つのグループを生成するレポートをコード化しようとしています:毎日、毎月、四半期、私が実行している問題は、毎日の活動がない場合、毎月、四半期、または毎年生成されないということです。データを持たない曜日に0を生成し、他の3つのグループを計算するにはどうすればよいですか?ここで私が使用しようとしていますコードは(それが今年はまだグループとして含まれていない)である:毎日、毎月、四半期、および毎年のグループによる売上データの生成
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