我有三个表,分别是xingming(xm,kh),chengji1(kh,chengji),chengji2(kh,chengji)
我通过left join 来连接这三个数据,表把学生的姓名,学号,成绩并且总分(通过各科成绩相加)读出来.
这这么做有个问题,假如该学生只参加了chengji1这一科的考试,chengji2里面没有他的记录.这样读出来时,没参加考试的科目的值为null,总分也是null.有什么办法能给它 设置缺省值,没有成绩时,默认为0..
现在数据库已经无法更改,已经处于最后验收阶段!!!

解决方案 »

  1.   

    使用函数IsNull(xxx,0):如果此值为Null,则返回0Select A.XingMing,
      IsNull(B.ChengJi1,0) As ChengJi1,
      IsNull(C.ChengJi2,0) As ChengJi2,
    From XingMing As A
    Left Join ChengJi1 As B  On ...
    Left Join ChengJi2 As C  On ...
      

  2.   

    to:完美生活
    提示IsNull(chengji1,0)中的参数个数不对.怎么回事啊
      

  3.   

    Select A.XingMing,
      iif(B.ChengJi1 is null,0) As ChengJi1,
      iif(C.ChengJi2 is null,0) As ChengJi2,
    From XingMing As A
    Left Join ChengJi1 As B  On ...
    Left Join ChengJi2 As C  On ...如上,改用iif函数实现当某字段为空时赋值.
      

  4.   

    Isnull函数就是两个参数。没有不对呀?
    你再调一下,不行就把你的Sql语句和错误信息贴出来。
      

  5.   

    isnull只能使用一个参数,只能是isnull(ziduan1),是真则返回1,否则返回null
    改用iif(C.ChengJi2 is null,0,c.chengji2) As ChengJi2 好使了.马上结帖
      

  6.   

    恩?
    你使用的数据库不是SQL SERVER吧?
    这个函数我用了好几年了。 :(