【发布时间】:2017-05-27 08:41:30
【问题描述】:
我有一个 RPT_DailySalesSummary 表,其中包含 CalDate、OrderID、SalesAmount、LocRecID 列。
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 总计 2016-12-01 220 150 130 500 2016-12-02 250 104 160 514 总计 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。我不知道如何继续代码来创建我的预期结果。
有人可以帮忙吗?非常感谢。
【问题讨论】:
标签: sql-server