我这有个表,表名为Accident_Report,意思是事故报告,里面包含字段有AccidentTypeId事故类型ID,deathnumber死亡人数,woundnumber受伤人数,unitid单位,date日期等,另一个表为事故类型字典,Id与AccidentTypeId为关联字段,Contents为类型内容
我现在要用select语句实现所有类型的事故详细情况,人数是叠加Sum方法,我有个问题就是只有我数据库有记录,才会显示出数据,没有记录的事故类型就不显示了,但是我的目的是所有的事故类型都显示,没记录的显示0,求大虾们教我!

解决方案 »

  1.   

    left joinselect a.* , isnull(b.col,0) col from a left join b on a.id = b.id
      

  2.   

    outer join + Isnull 函數
      

  3.   

    select a.* , isnull(b.deathnumber , 0) deathnumber , isnull(b.woundnumber , 0) woundnumber
    from 事故类型字典 a left join 事故报告 b on a.Id = b.AccidentTypeIdselect a.* , isnull(b.woundnumber , 0) woundnumber
    from 事故类型字典 a left join (select AccidentTypeId , sum(deathnumber) deathnumber , sum(woundnumber) woundnumber from 事故报告 group by AccidentTypeId) b on a.Id = b.AccidentTypeId
      

  4.   

    select T.AccidentTypeId,T.Contents,dea=sum(G.deathnumber) from 事故类型字典表 T left join accident_report G on T.AccidentTypeId=G.AccidentTypeId group by T.AccidentTypeId,T.contents
      

  5.   

    我是菜鸟,于是我说的只能做参考哈
    方法一:
    select  a.Contents as '事故信息',isnull(b.DeathNumber,0) as '死亡人数',isnull(b.WoundNumber,0) as '受伤人数',isnull(b.Date,'') as '事故发生日期' from Accident_Type as a, Accident_Report as b  where b.AccidentTypeID=a.ID 
    方法二:
    在设计数据表时,将死亡人数和受伤人数设置成 默认值为0
    当数据为NULL时就自动变成0了(我都有设置默认值的习惯,大家有何看法?哈哈)
      

  6.   

    ISNULL
    使用指定的替换值替换 NULL。
      

  7.   

    还有,每条数据里都有死亡人数和受伤人数,你做sum()是求一段时间内的某一类型的死亡人数之和吗?