SQL行转列统计问题

来源:互联网 发布:量化金融和大数据金融 编辑:程序博客网 时间:2024/05/18 03:20

今天在CSDN上看见有人提出如下的SQL统计问题,于是帮他写了一个SQL语句。

问题如下:


表结构如下

要实现的效果如下:


这个涉及行专列问题,SQL语句如下:

insert into product values('13303','茶杯','蓝色','a',20);insert into product values('13303','茶杯','蓝色','b',10);insert into product values('13303','茶杯','蓝色','c',30);insert into product values('13303','茶杯','灰色','a',10);insert into product values('13304','水杯','白色','b',20);declare @sql varchar(8000)set @sql = 'select [id],[name],[color] 'select @sql = @sql + ' , max(case [size] when ''' + [size] + ''' then number else 0 end) [' + [size] + ']'from (select distinct [size] from product) as aset @sql = @sql + ' from product group by [id],[name],[color]'exec(@sql)

最终显示效果如下图:


SQL行列转换+合并操作,原帖地址:http://bbs.csdn.net/topics/390348963

Create table 数据  --创建表(    ID Int IDENTITY(1,1)  not null,      编号  Varchar(50),       明细 Varchar(50),        Primary Key(ID)        ); Insert Into 数据Select 1,'a' Union allSelect 1,'b' Union allSelect 1,'c' Union allSelect 2,'a' Union allSelect 2,'b' Union allSelect 2,'d'Union allSelect 3,'a'Union allSelect 3,'b' --创建自定义函数Create Function CSDN(   @mx Varchar(50))Returns Varchar(8000)as BeginDeclare @str Varchar(8000)Set @str = ''Select @str = @str + cast(明细 as Varchar(50))  + ',' from 数据 Where 编号 = @mx Set @str = SubString(@str,1,len(@str)-1)Return(@str)End --调用自定义函数得到结果Select Distinct 编号,dbo.CSDN(编号) as 明细From 数据;





原创粉丝点击