Sql表间操作

来源:百度知道 编辑:UC知道 时间:2024/05/27 23:51:05
有3张表,员工,项目,项目负荷,关联效果如下
员工 *编号,姓名,年龄。。。。。
项目 项目名,所属部门,*项目编号
项目负荷 *项目编号,立案工时,*员工编号

姓名 项目名 立案工时
张三 防火系统 200
张三 防盗系统 200
李四 防盗系统 200
李四 防水系统 200
李四 自来水系统 200
王五 自来水系统 200
王五 防狼系统 200

要求做出如下效果:
姓名 防火系统 防盗系统 防水系统 自来水系统 防狼系统
张三 200 200 0 0 0
李四 0 200 200 200 0
王五 0 0 0 200 200

期待高手解决并解答思路,在这里先谢谢了

我不是什么高手,就是会一点sql语句,我写了一个sql语句,希望与你共同学习sql(我写的是sql server的语句,如果是其他的数据库,那可能会有些不同)

select 员工.姓名,
防火系统=case when 项目名='防火系统' then 立案工时,else '0' end,
防盗系统 =case when 项目名='防盗系统' then 立案工时,else '0' end,
防水系统 =case when 项目名='防水系统' then 立案工时,else '0' end,
自来水系统=case when 项目名='自来水系统' then 立案工时,else '0' end,
防狼系统 =case when 项目名='防狼系统' then 立案工时,else '0' end
from(
select 员工.姓名,项目名,员工编号,立案工时
from(
select 员工.姓名,项目.项目名
from 项目, 员工
where 员工.编号=项目.项目编号 /*我认为你的项目和员工两个表是由员工.编号和项目.项目编号相关联的,所以这样写了*/
)a,项目负荷
where 项目负荷.项目编号=项目.项目编号/*与上面同理*/
)b
group by 员工.姓名,
case when 项目名='防火系统' then 立案工时,else '0' end,
case when 项目名='防盗系统' then 立案工时,else '0' end,
case when 项目名='防水系统' then 立案工时,else '0' end,
case when 项目名='自来水系统' then 立案工时,else '0' end