【发布时间】:2015-09-07 12:17:03
【问题描述】:
我有一个动态 PIVOT 查询,其中动态生成列。
我的餐桌:ATTENDANCE_MASTER 包含:ID、Stud_id、ATT_DATE、PRESENT
其中存储的数据如下:
ID Stud_id ATT_DATE PRESENT
1 1 2015-08-1 1
2 2 2015-08-1 0
3 3 2015-08-1 1
4 1 2015-08-2 0
5 2 2015-08-2 1
6 3 2015-08-2 1
我创建了 PIVOT 查询
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME(ATT_DATE)
FROM (SELECT p.ATT_DATE FROM dbo.ATTENDANCE_MASTER AS p
GROUP BY p.ATT_DATE) AS x;
SET @sql = N'SELECT Stud_id, ' + STUFF(@columns, 1, 2, '') + '
FROM
(
SELECT p.ATT_DATE, p.Stud_id, p.PRESENT FROM dbo.ATTENDANCE_MASTER AS p
) AS j
PIVOT
(
SUM(PRESENT) FOR ATT_DATE IN ('+ STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')
) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;
我需要像这样的列的总和
Stud_ID 2015-08-01 2015-08-2 2015-08-3 Total
1 1 0 1 2
2 1 1 1 3
3 1 1 0 2
4 0 0 1 1
请给我建议解决方案。
提前致谢。
【问题讨论】:
-
我知道如何计算静态列的总和,但我不知道如何计算动态列的总和
-
你现在有什么输出?
-
这里的动态是什么?日期列数?
-
现在我有上面的输出除了总列
-
是的,日期的列名是动态@bmsqldev
标签: sql-server pivot powerpivot pivotviewer activepivot