select col1,sum(生产部),sum(财务部),sum(计划部) from (
select col1,生产部=(case when col2='生产部' then col3 else 0 end),
财务部=(case when col2='财务部' then col3 else 0 end),
计划部=(case when col2='计划部' then col3 else 0 end) from yourtablename) c
偶只会简单的
select col1,生产部=(case when col2='生产部' then col3 else 0 end),
财务部=(case when col2='财务部' then col3 else 0 end),
计划部=(case when col2='计划部' then col3 else 0 end) from yourtablename) c
偶只会简单的
解决方案 »
- 怎样实现查询多条件?
- sql server 2000建立的数据库可以在sql server 2005中使用吗?
- 向sqlserver2000中导入数据时,某些字段的值读不出来,断点显示是“inaccessible value”,导入时出错。该怎么处理?
- 分割字符串的问题
- 各位大哥,row_number在2005中存在,但2000中有无类似的函数?
- 这样的insert into from这样写啊????????
- 关于参数的格式问题
- SQL本地服务器运行不了怎么办?
- SQL7.0数据库的恢复?
- 急!高分相送
- 怎样显示服务器端的盘符及目录信息
- 为什么我改了windows 的登陆密码或帐号后启动不了sqlserver2000的服务?
insert #t select
1, '01.01' , '生产部' , 100
union select 2, '01.02', '生产部', 200
union select 3, '01.01', '生产部' , 300
union select 4 , '01.03' , '生产部' , 50
union select 5 , '01.02' , '财务部' , 30
union select 6 , '01.07' , '计划部' , 100declare @s varchar(8000)
set @s=''
select @s=@s+'sum(case when 领用部门='''+领用部门+''' then 数量 else 0 end) ['
+领用部门+'] , ' from #t group by 领用部门
select @s='select 商品代码, '+left(@s,len(@s)-2)+' from #t group by 商品代码'
exec(@s)
drop table #t
create table abc (序号 int,商品代码 char(10),领用部门 varchar(20),数量 int)
insert abc select 1,'01.01','生产部',100
union select 2,'01.02','生产部',200
union select 3,'01.01','生产部',300
union select 4,'01.03','生产部',50
union select 5,'01.02','财务部',30
union select 6,'01.07','计划部',100--测试数据
SELECT 商品代码,
SUM(CASE 领用部门 WHEN '生产部' THEN 数量 ELSE 0 END) AS 生产部,
SUM(CASE 领用部门 WHEN '财务部' THEN 数量 ELSE 0 END) AS 财务部,
SUM(CASE 领用部门 WHEN '计划部' THEN 数量 ELSE 0 END) AS 计划部
FROM hou.dbo.abc
GROUP BY 商品代码
GO
--测试结果01.01 400 0 0
01.02 200 30 0
01.03 50 0 0
01.07 0 0 100
victorycyz(中海),javahou(岩珂)我想问一下,用case的话,如果数据量很大的话,会不会影响速度?谢谢。