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 数据;
- SQL行转列统计问题
- sql统计查询问题
- SQL查询统计问题
- 有关SQL Server分布统计的问题
- SQL Server统计信息:问题和解决方案
- SQL 去除重复值进行统计问题
- 统计SQL
- SQL统计
- sql 统计
- sql统计
- 统计sql
- sql统计
- 统计sql
- SQL统计
- 数据库sql的查询统计问题 用存储过程实现;
- MySQL:因为统计信息错误引起的sql问题
- sql查询统计信息(行转列)
- [Oracle SQL] 使用rollup分组统计按统计结果分组排序显示的问题
- wait_for_completion_timeout 的返回值
- 《Professional Linux Kernel Architecture》读书笔记 (1)
- URL中文乱码解决
- 【操作系统】linux--双系统下格式化了linux盘导致开机无法进入linux
- 算法导论第十五章-装配线高度算法实现
- SQL行转列统计问题
- 也说说Thunk
- Android平台利用ZXING生成二维码图片
- HDU1022 Train Problem I,简单栈的应用
- js encodeURI转义特殊字符
- 利用组策略进行的一次Windows主机安全整改
- C++中如何实现final类
- poj 2182 Lost Cows
- [Python源码学习]之数据类型