動的に列を構築し、ダイナミックPIVOTを使用します。
Create Table #Test(Item_id varchar(100),Location varchar(100),Qty int)
insert into #Test values('1','a','1')
insert into #Test values('2','b','2')
insert into #Test values('3','c','3')
insert into #Test values('3','a','1')
insert into #Test values('2','c','2')
insert into #Test values('1','b','3')
DECLARE @cols1 AS NVARCHAR(MAX), @cols2 AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);
SET @cols1 = STUFF((SELECT distinct ', isnull(' + quotename(s.Location) + ', 0) as ' + quotename(s.Location)
FROM #Test s
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @cols2 = STUFF((SELECT distinct ',' + quotename(s.Location)
FROM #Test s
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Item_id, ' + @cols1 + ' from
(
select Item_id
, Location
, Qty
from #Test
) x
pivot
(
max(qty)
for Location in (' + @cols2 + ')
) p '
execute(@query)
drop table #Test
は、私たちは、問題を分析し、あなたを支援するために、あなたのSQLクエリのコードを提供します。ありがとう! –
Google:SQL Serverのピボット –
それ以上のものはありますか?メッセージが短すぎます。 – DeiMo