0
この質問は以前の質問と似ていますが、私は解を見つけることができません。ピボットでの注文方法は?
私はこのクエリ
CREATE TABLE #SampleData
(
Name varchar(10),
Location varchar(20),
Item varchar(10),
Date varchar(8)
)
INSERT INTO #SampleData
VALUES
('Ron', 'Loc A', 'Pencil', '20170610'),
('Ron', 'Loc A', 'Pencil', '20170611'),
('Ron', 'Loc B', 'Pen', '20170610'),
('Ron', 'Loc B', 'Laptop', '20170611'),
('Tom', 'Loc A', 'Pencil', '20170611'),
('Tom', 'Loc B', 'Pencil', '20170610'),
('Tom', 'Loc B', 'Pen', '20170610'),
('Tom', 'Loc A', 'Pencil', '20170610'),
('Tom', 'Loc A', 'Laptop', '20170610'),
('Tom', 'Loc A', 'Pencil', '20170610')
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(location) = 1 and grouping(name) = 0 then ''Total''+ '' '' + name
when grouping(location) = 1 and grouping(name) = 1 then ''Total''
else name end Name,
case when grouping(location) = 1 and grouping(name) = 0 then CONVERT(varchar(10), COUNT(Distinct location))
when grouping(location) = 1 and grouping(name) = 1 then CONVERT(varchar(10), COUNT(Distinct location))
else Location end Location,
'+ @select_Columns + '
FROM
(
SELECT name, location, item
FROM #SampleData
) as PivotData
PIVOT
(
count(item)
for item IN ('
+ @Pivot_Columns + ')
) AS PivotResult
group by name,location with rollup
'
EXEC(@SQL)
と、このような結果があります:私のクエリは次のようになりますどのように注文する
を? theresの場合は私の場所のないカウントは私のクエリは、事前に、感謝を私はこの問題を解決するソリューションを必要と
正常に動作しません!
を私は私のテーブルの下に合計下記期日までに多くの合計を持っているので、私は、そうは思いません。 –
申し訳ありませんが、私の答えは削除されます –