declare @s varchar(8000)
set @s=''
select @s=@s+',数量'+标示+'=sum(case 标示 when '''+标示+''' then 数量 else 0 end)'
from 表 group by 标示exec('select 商品'+@s+' from 表 group by 商品')
set @s=''
select @s=@s+',数量'+标示+'=sum(case 标示 when '''+标示+''' then 数量 else 0 end)'
from 表 group by 标示exec('select 商品'+@s+' from 表 group by 商品')
解决方案 »
- 如何使用存储过程返回值
- 为每个用户建立一个登录名,并以此作为过滤条件来建立视图以实现用户间的数据隔离,不知道是否可行? asp.net + SQL Server
- 2表间的查询,求救
- 关于使用TDS将excel导入到sqlserver的问题!!!!急等
- EXECUTE 权限是什么含义?
- 大侠们。。帮我看看这触发器有什么问题吧。。急!在线等!
- 高手进。。mssql的一个难题...急...求救。。。
- 一个表的外键怎么对应多个表主键
- vfp里debuger报Source is out of date,这是什么意思?请教!
- 表联结问题,急急急!!!!!!!(在线等待)
- 怎样判断溢出的列?我现在有50多万条记录insert,里面有好几个列为tinyint,如何判断是那一行值超出范围溢出呢
- 今天看到一个asp.net版的SQL MANAGERG管理器的下载地址(含源代码)......
表内容:
标示 数量 商品
A -1 测试
B 1 测试
SQL查询为:
商品 数量1 数量2
测试 -1 1
效果
有无更简洁的方法?
declare @b varchar(8000)
select @a = ' sum(case 标示 when '''+标示+''' then 数量 else 0 end) as 数量'
+ 标示+',' from t_1 group by 标示
select @a =left(@a,len(@a)-1)
select @b ='select 商品,'+@a+' group by 商品'
exec(@b)
表内容:
标示 数量 商品
A -1 测试
B 1 测试
SQL查询为:
商品 数量1 数量2
测试 -1 1
--*/--则查询语句
select 商品
,数量1=sum(case 标示 when 'A' then 数量 else 0 end)
,数量2=sum(case 标示 when 'B' then 数量 else 0 end)
from 表
group by 商品