如何将Table1表,整理成Table2,其中一个合同号只对应一个工长与监理,没有的为空或0显示Table1合同号 职务 姓名 数量 提成
001 工长 李 2 200
001 工长 李 3 400
001 监理 王 2 300
001 监理 王 5 500
002 工长 赵 1 100Table2合同号 工长 数量 工长提成 监理 数量 监理提成
001 李 5 600 王 7 800
002 赵 1 100 0 0
001 工长 李 2 200
001 工长 李 3 400
001 监理 王 2 300
001 监理 王 5 500
002 工长 赵 1 100Table2合同号 工长 数量 工长提成 监理 数量 监理提成
001 李 5 600 王 7 800
002 赵 1 100 0 0
解决方案 »
- 求大神们指点一个SQL语句
- 没有主键的数据库中把两条完全重复的记录删除掉一条
- =======关于查询统计问题=======
- 机子上原有SQLSERVER2000,现在装了个SQLSERVER2005SP2,每次开机时!
- sql账号登陆后用T_SQL或者直接修改数据库数据,能否查到是哪个账号修改了哪里的数据?
- 未能在索引页 (1:721) 中找到 RID '16009c41fe685dd1ef1707000100050000' 的索引条目(索引 ID 0,数据库 'sdo')
- visual studio2005安装问题
- One question about SQL SERVER?
- 用触发器更新和删除数据的问题
- 创建临时表的问题
- vb6调用sql server2000存储过程出错
- sql 2008 写的触发器 在 sql 2000中运行总是报错?客户现场求解答啊
--如果百度了还是不会再看下面的--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (合同号 varchar(3),职务 varchar(4),姓名 varchar(2),数量 int,提成 int)
insert into [tb]
select '001','工长','李',2,200 union all
select '001','工长','李',3,400 union all
select '001','监理','王',2,300 union all
select '001','监理','王',5,500 union all
select '002','工长','赵',1,100--开始查询
select 合同号,
工长=MAX(case when 职务='工长' then 姓名 else '0' end),
数量=SUM(case when 职务='工长' then 数量 else 0 end),
工长提成=SUM(case when 职务='工长' then 提成 else 0 end),
监理=MAX(case when 职务='监理' then 姓名 else '0' end),
数量=SUM(case when 职务='监理' then 数量 else 0 end),
监理提成=SUM(case when 职务='监理' then 提成 else 0 end)
from [tb]
group by 合同号--结束查询
drop table [tb]/*
合同号 工长 数量 工长提成 监理 数量 监理提成
---- ---- ----------- ----------- ---- ----------- -----------
001 李 5 600 王 7 800
002 赵 1 100 0 0 0(2 行受影响)