我試圖用動態數據透視中的2個coulin創建一個總數爲2的子查詢。如何在動態數據透視中總計多於1 sql
我有表&這樣的查詢
CREATE TABLE #SampleData
(
Class varchar(10),
Name varchar(10),
Location varchar(10),
Item varchar(10),
temp varchar (10)
)
INSERT INTO #SampleData
VALUES
('abc', 'Ron', 'A', 'Pencil', '12345'),
('abc', 'Ron', 'A', 'Pen', '2345'),
('abc', 'Tom', 'C', 'Pencil', '34343'),
('abc', 'Tom', 'D', 'Pencil', '252525'),
('def', 'Ron', 'E', 'Pen', '35345'),
('def', 'Tom', 'F', 'Pencil', '87878'),
('def', 'Tom', 'G', 'Pen', '9876'),
('ghi', 'Ron', 'H', 'Pen', '09090'),
('ghi', 'Ron', 'I', 'Pen', '40404'),
('ghi', 'Tom', 'J', 'Pencil', '144442345'),
('ghi', 'Tom', 'K', 'Pencil', '4444333')
DECLARE @Pivot_Columns AS VARCHAR(MAX),
@select_Columns VARCHAR(max)
SELECT @Pivot_Columns = Stuff((SELECT DISTINCT ',' + Quotename(item) FROM #SampleData FOR xml path('')), 1, 1, '')
SELECT @select_Columns = Stuff((SELECT DISTINCT ',Sum(' + Quotename(item) + ') as '+Quotename(item) FROM #SampleData FOR xml path('')), 1, 1, '')
DECLARE @SQL AS VARCHAR(MAX)
SET @SQL = 'SELECT case when grouping(name) = 1 and grouping(class) = 0 then ''Total''+ '' '' + class
when grouping(name) = 1 and grouping(class) = 1 then ''Total''
else class end class, name, location, temp,'
+ @select_Columns + '
FROM
(
SELECT class, name, location, item, temp
FROM #SampleData
) as PivotData
PIVOT
(
count(item)
for item IN ('
+ @Pivot_Columns + ')
) AS PivotResult
group by class, name, location, temp with rollup
'
EXEC(@SQL)
我只是想告訴從名稱大部基於類&大部類,但在我的第一成像有基於溫度子總。如果我更改'按類別分組,名稱與彙總'有顯示錯誤..
感謝任何幫助,謝謝。
我已經嘗試GROUPING SETS但我查詢不工作以及.. 和查詢工作的罰款三江源這麼多。 –