2013-07-30 84 views
3

這是我的桌子 - Select ItemName, ItemDescription from MyTable透視表值

我不知道這個值會是什麼在ITEMNAMEItemDescription

是否可以顯示數據,以便ITEMNAME將作爲列上創建和ItemDescription對該行價值?

回答

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 ('[email protected]+')) AS pvt' 

exec (@sql) 

結果:

id item 1 item 2 
1 desc1 desc2 
2 desc2 NULL