3

これは私のテーブルです -Select ItemName, ItemDescription from MyTable

ItemNameまたはItemDescriptionの値がどうなるかわかりません。

ItemNameが列として作成され、ItemDescriptionが行の値になるようにデータを表示することは可能でしょうか?

4

1 に答える 1

1

mssql 2008 以降が必要です

create table mytable( ItemName varchar(10), ItemDescription varchar(10))

insert mytable values('item 1', 'desc1')
insert mytable values('item 2', 'desc2')
insert mytable values('item 1', 'desc2')

declare @list varchar(2000)
;with cte 
as(
select distinct top 100 percent replace(replace(itemname, ']', ''), '[', '') itemname
from mytable
order by itemname
)
select @list = coalesce(@list + ',' + '['+itemname+']', '['+itemname+']') from cte

declare @sql varchar(4000)
set @sql =
'
select * from
(
select replace(replace(itemname, '']'', ''''), ''['', '''') itemname, ItemDescription, row_number() over (partition by ItemName order by ItemDescription) id from mytable
)  a
PIVOT (MAX([ItemDescription]) FOR [itemname] IN ('+@list+')) AS pvt'

exec (@sql)

結果:

id  item 1  item 2
1   desc1   desc2
2   desc2   NULL
于 2013-07-30T09:42:35.350 に答える