请帮助我了解如何在此数据透视表上实施ROLLUP
。
我一直在寻找其他几个书面解决方案来满足我的要求,但是当我将它应用到我的情况时,我似乎错过了一些东西。 SQL不是我的力量,但我觉得每次完成某些事情我都会理解更多。
在下面创建此透视图语句有点困难,因为我需要使用动态字段来汇总不同dID
的总计,具体取决于运行报告的cID
。
我正在使用一种方法来动态创建NVARCHAR
,它将代表我在数据透视表中应用SUM
的列。我已尝试将ROLLUP
功能用作GROUP BY
SELECT
条件的一部分但未成功。
我想要的总体布局如下所示。另外,我有一个来自不同数据集的相同dID
的第二个数据透视表,我想将两者中的总计合并到一个新表中,并创建一个GrandTotal。我想这最好用UNION
5,E,100-113,#
DECLARE @sID int = 100
DECLARE @cID int = 5
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName = ISNULL(@ColumnName + ',', '') + QUOTENAME(qID)
FROM(SELECT qID FROM qTable WHERE cID = @cID) AS QuestionID
DECLARE@ PivotTableSQL NVARCHAR(MAX)
SET@ PivotTableSQL = N'
SELECT
dID, dName, ' + @ColumnName + '
FROM (
SELECT dID, dName, qID, weighted AS [score]
FROM sourceTable
WHERE sID = ' + CAST(@sID AS nvarchar(8)) + ' AND cID = ' + CAST(@cID AS nvarchar(8)) + '
) AS PivotData
PIVOT (
SUM(score)
FOR [qID] IN (
' + @ColumnName + '
)
) AS PivotTable
GROUP BY
dID, dName,' + @ColumnName
EXECUTE(@PivotTableSQL)