私はピボット問題に取り組んでいます。私はいくつかのコードを思いつきましたが、コーディングに失敗しました。ここで私が間違っていることについて、誰かが私にいくつかのガイダンスを教えてください。
以下のコードで作成された表1があります。
create table T1 (
[name] varchar(30)
,[size] int
,[DT] date)
insert into T1 values ( 'x1', 14, '01/03/2013' );
insert into T1 values ( 'x1', 134, '01/04/2013' );
insert into T1 values ( 'x1', 199, '01/05/2013' );
insert into T1 values ( 'x1', 284, '01/06/2013' );
insert into T1 values ( 'x2', 212, '01/03/2013' );
insert into T1 values ( 'x2', 369, '01/04/2013' );
insert into T1 values ( 'x2', 439, '01/05/2013' );
insert into T1 values ( 'x2', 555, '01/06/2013' );
テーブルを次の形式にピボットする必要があります。
01/03/13 01/04/2013 01/05/2013 01/16/2013
X1 14 134 199 284
X2 212 369 439 555
これが私が取り組んできたコードですが、上記の出力に組み込むことに失敗しましたか? 私のためのアイデアや指針はありますか?前もって感謝します...
declare @DateList as varchar(max)
declare @dynamic_PQ as varchar(max)
select @DateList =
stuff( (
select DISTINCT
', '+ Quotename(CONVERT(VARCHAR(10),DT,110))
from
( select dt from t1 ) t
for xml path ('')
),1,1,'')
select @DateList
set @dynamic_PQ = 'select [GuestID], ' + @DateList +
' from
(
Select [name],
size,
STUFF((SELECT distinct '', '' + convert(a2.size as varch(10))
from t1 a2
where src.name = a2.name
and src.dt = a2.dt
FOR XML PATH(''''), TYPE
).value(''.'', ''NVARCHAR(MAX)'')
,1,1,'''') answer
from
(
select name,
dt ,
size
from t1
) src
) as S
PIVOT
(
MAX([size])
for Question IN (' + @DateList + ')
) as P
Exec(@dynamic_PQ)
追伸: あなたの投稿に誰かに回答/返信してもらうために何か特別なことをしなければならない場合は、お気軽に返信で共有してください。