行转列,参数是文本类型

create table test(采购编号 nvarchar(50)
,属性名称 nvarchar(50)
,属性文本 nvarchar(50)
)

insert into test select '01','付款方式','一次性'
insert into test select '02','厂商名称','IBM'

insert into test select '02','付款方式','分期付款'
insert into test select '01','厂商名称','百度'


select * from test

------------------------存储过程型--------------------------------
declare @sql varchar(8000)
set @sql = 'select 采购编号'
select @sql = @sql + ',max(case 属性名称 when '''+属性名称+''' then 属性文本 end) ['+属性名称+']'
from (select distinct 属性名称 from test) as a
select @sql = @sql+' from test group by 采购编号'
print @sql
exec(@sql)

------------------------存储过程型结束--------------------------------

 

------------------------pivot函数型--------------------------------

select 采购编号,付款方式,厂商名称
from test
pivot
(
max(属性文本) for 属性名称 in ([付款方式],[厂商名称])
)
tmp

------------------------pivot函数型--------------------------------

 

drop table test

 

 

select 采购编号,

max(case 属性名称
when '厂商名称' then
属性文本
end) [ 厂商名称 ],

max(case 属性名称
when '付款方式' then
属性文本
end) [ 付款方式 ]
from test
group by 采购编号

 

其中max参数如果是nvarch()则返回该字段长度最长的字符串

注:该文章出处找不到了,暂时记录下来

posted on 2014-12-10 19:16  蒲苇吥弃  阅读(199)  评论(0编辑  收藏  举报

导航