動的ピボットで2クーリンから合計と2小計を使用してクエリを作成しようとしています。ダイナミックピボットSQLで1を超えるサブ合計する方法
私はこの
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)
のようなテーブル&クエリを持っており、どのようにこのようなデータを作成するために?
Iクラス&小計クラスに基づいて名前からわずかたいショーの小計が、私の最初のイメージャに一時に基づいてサブの合計があります。私が 'クラス別にグループ化すると、ロールアップで名前を付けました。'というエラーが表示されます。
ありがとうございました。
私はすでにSETSをグループ化してみたが、私のクエリがうまく機能していない... とあなたのクエリがそんなにありがとううまく働きました。 –