0
私は、列CalDate、OrderID、SalesAmount、LocRecIDを持つテーブルRPT_DailySalesSummaryを持っています。SQL Server 2012の列と行の合計を持つ動的ピボットテーブル
CalDate OrderID SalesAmount LocRecID 2016-12-01 R101 100 81 2016-12-01 R102 120 81 2016-12-01 R113 150 82 2016-12-01 R104 130 85 2016-12-02 R205 250 81 2016-12-02 R106 104 82 2016-12-02 R112 80 85 2016-12-02 R032 80 85
以下の結果表を、各カレンダーの日付ごとの位置ID別に出力したいとします。 (注:位置の番号は動的です)
CalDate 81 82 85 Total 2016-12-01 220 150 130 500 2016-12-02 250 104 160 514 Total 470 254 290 1014
以下のコードは、ピボットテーブルを出力できますが、行と列の合計は出力できません。
DECLARE @cols NVARCHAR(MAX)=''
DECLARE @query NVARCHAR(MAX)=''
SELECT @cols = @cols + QUOTENAME(LocRecID) + ','
FROM (SELECT DISTINCT LocRecID FROM dbo.RPT_DailySalesSummary) AS tmp
SELECT @cols = SUBSTRING(@cols, 0, LEN(@cols))
SET @query =
'SELECT * FROM
(
SELECT CalDate, SalesAmount, LocRecID
FROM dbo.RPT_DailySalesSummary
) src
PIVOT
(
SUM(SalesAmount) FOR LocRecID IN (' + @cols + ')
) piv'
execute(@query)
PIVOTの使い方がわかりにくく、実際には理解できません。期待通りの結果を出すためにコードをどのように継続しているのか分かりません。
誰でも手助けできますか?どうもありがとうございます。
ありがとうとても。私はT-SQLのGROUP BY ROLLUP機能が同じことをしているのを見て、私のケースにどのように適用できますか? –
最後の共用体allを削除し、最初の選択にロールアップを適用します –