现有表A 危险源等级表 字段有:DSLCode(危险源等级编码) DSLName(危险源等级名称)--总共有5级 表B 部门表 字段有:DepCode(部门编码) DepName(部门名称)等等字段 表C 危险源表 字段有:DangerousSourceCode(危险源编码)DangerousSourceName(危险源名称) DepCode(部门编码) DangerLevel(危险源登记) 如何写一个视图,来查询“每个部门的1-5级的危险源的个数”
select DepName,
[等级1]=sum(case when DangerLevel=1 then 1 else 0 end),
[等级2]=sum(case when DangerLevel=2 then 1 else 0 end),
[等级3]=sum(case when DangerLevel=3 then 1 else 0 end),
[等级4]=sum(case when DangerLevel=4 then 1 else 0 end),
[等级5]=sum(case when DangerLevel=5 then 1 else 0 end)
from 部门表 a
join 危险源表 c on a.DepCode=c.DepCode
join 危险源等级表 b on b.DangerousSourceCode=c.DangerousSourceCode
group by a.DepName
(select DepCode,count(*) as num from tb_c group by Depcode,dangersourceCode having(dangerousSourcecode between 1 and 5)) as a group by a.Depcode有个from 没写到
--没有数据,只是提供思路select DepName,
[等级1]=sum(case when DangerLevel=1 then 1 else 0 end), --当等级等于1时的记录条数
[等级2]=sum(case when DangerLevel=2 then 1 else 0 end),
[等级3]=sum(case when DangerLevel=3 then 1 else 0 end),
[等级4]=sum(case when DangerLevel=4 then 1 else 0 end),
[等级5]=sum(case when DangerLevel=5 then 1 else 0 end)
from 部门表 a
join 危险源表 c on a.DepCode=c.DepCode --2个join连接3个表
join 危险源等级表 b on b.DangerousSourceCode=c.DangerousSourceCode
group by a.DepName --按部门分组
我要把危险源等级放到标题那栏
把部门放到左面的第一行
把危险源的个数放到中间的行列中。、
在问你下,现在美工给我们的是 table形式的,就是静态的,我是想着换成dataview来实现,
如果是table能实现么?
指教下我