现有表A  危险源等级表    字段有:DSLCode(危险源等级编码)  DSLName(危险源等级名称)--总共有5级     表B  部门表          字段有:DepCode(部门编码)  DepName(部门名称)等等字段     表C  危险源表        字段有:DangerousSourceCode(危险源编码)DangerousSourceName(危险源名称)                                 DepCode(部门编码)  DangerLevel(危险源登记) 如何写一个视图,来查询“每个部门的1-5级的危险源的个数”

解决方案 »

  1.   


    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
      

  2.   

     select a.depcode,sum(num)as num (select DepCode,count(*) as num from tb_c group by Depcode,dangersourceCode having(dangerousSourcecode between 1 and 5)) as a group by a.Depcode 
      

  3.   

    select a.depcode,sum(num)as num from
    (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 没写到
      

  4.   

    能给我解释一下么?很感谢,我很少写 sum case  和 jion  on
      

  5.   


    --没有数据,只是提供思路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       --按部门分组
      

  6.   

    因为我要绑定到dataview控件上
    我要把危险源等级放到标题那栏
    把部门放到左面的第一行
    把危险源的个数放到中间的行列中。、
      

  7.   

    哎 大哥
    在问你下,现在美工给我们的是 table形式的,就是静态的,我是想着换成dataview来实现,
    如果是table能实现么?
    指教下我