我试图用动态数据透视中的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但我查询不工作以及.. 和查询工作的罚款三江源这么多。 –