我要查询各种产品的库存量,SELECT语句这样写:
  select 产品编号, 产品名称, 
    ((SELECT SUM(进货数量) from 进货记录 AS b WHERE a.产品编号=b.产品编号) -    (SELECT SUM(购买数量) from 销售记录 AS c WHERE a.产品编号=c.产品编号)) 
    AS 库存量 from 产品目录 AS a
问题是:当进货数量和购买数量都有该产品编号的记录时,库存量的计算是正确的,但当该产品编号的产品没有销售量(购买数量)时,查询出来的库存量为空值。我该怎样改写这条查询语句呢?

解决方案 »

  1.   

    select 产品编号, 产品名称, 
        ((SELECT ISNULL(SUM(进货数量),0) from 进货记录 AS b WHERE a.产品编号=b.产品编号) -    (SELECT ISNULL(SUM(购买数量),0) from 销售记录 AS c WHERE a.产品编号=c.产品编号)) 
        AS 库存量 from 产品目录 AS a
      

  2.   

    我试了一下,出现下列错误,是不是ISNULL函数的格式不对?---------------------------
    用于函数参数的个数不对 在查询表达式 'ISNULL(SUM(进货数量), 0)' 中。.
    ---------------------------
      

  3.   

    改成这样?sum(isnull(进货数量,0))
      

  4.   

    'ISNULL(SUM(进货数量), 0)'------------------------------什么数据库 ?
      

  5.   

    isnull 函数没有上面的用法,它返回的是个布尔值。我的想法是在录入产品进货数量的同时,就想办法增加一条销售数量为0的记录。
      

  6.   

    select 产品编号, 产品名称, 
        ((SELECT iif(SUM(进货数量)=null,0,SUM(进货数量)) from 进货记录 AS b WHERE a.产品编号=b.产品编号) -    (SELECT iif(SUM(购买数量)=null,0,SUM(购买数量)) from 销售记录 AS c WHERE a.产品编号=c.产品编号)) 
        AS 库存量 from 产品目录 AS a
      

  7.   

    谢谢genphone_ru(改行去学VC),但是这样还不行,我改成
    SELECT iif(ISNULL(SUM(进货数量)),0,SUM(进货数量))……
    才可以了。