我有以下的查询语句:
strSQL = "select M.HuoYuName,M.Num1,isnull(N.Num2,0),Num=isnull(M.Num1,0)-isnull(N.Num2,0) 
from (select HuoYuName,sum(Number) as Num1 from RuKu group by HuoYuName) M 
left join (select HuoYuName,sum(Number) as Num2 from ChuKu group by HuoYuName) N 
ON M.HuoYuName=N.HuoYuName"好象没有哪里有错误呢?一运行为什么总是说“isnull(N.Num2,0)的参数个数不对”。难道不是这样子写的吗?
先谢谢了!!

解决方案 »

  1.   

    呵呵,试过了,正常:
    create table RuKu
    (
    HuoYuName varchar(100),
    NUMBER int
    )
    insert into RuKu
    select 'a', 10create table ChuKu
    (
    HuoYuName varchar(100),
    NUMBER int
    )
    insert into ChuKu
    select 'a', 20SELECT M.HuoYuName,
           M.Num1,
           Isnull(N.Num2, 0),
           Num=Isnull(M.Num1, 0) - Isnull(N.Num2, 0)
    FROM   (SELECT HuoYuName,
                   SUM(NUMBER) AS Num1
            FROM   RuKu
            GROUP  BY HuoYuName) M
           LEFT JOIN (SELECT HuoYuName,
                             SUM(NUMBER) AS Num2
                      FROM   ChuKu
                      GROUP  BY HuoYuName) N
             ON M.HuoYuName = N.HuoYuName 
      

  2.   


    select M.HuoYuName,M.Num1,isnull(N.Num2,0),Num=isnull(M.Num1,0)-isnull(N.Num2,0)  
    from (select HuoYuName,sum(Number) as Num1 from RuKu group by HuoYuName) M  
    left join (select HuoYuName,sum(Number) as Num2 from ChuKu group by HuoYuName) N  
    ON M.HuoYuName=N.HuoYuName
    到查询分析器中去执行一下看是否正确.
    或者,看看:
    两个子查询出来的结果是什么.
      

  3.   

    改成下面的试试,去掉了"Num="
    strSQL = "select M.HuoYuName,M.Num1,isnull(N.Num2,0),isnull(M.Num1,0)-isnull(N.Num2,0) as Num
    from (select HuoYuName,sum(Number) as Num1 from RuKu group by HuoYuName) M  
    left join (select HuoYuName,sum(Number) as Num2 from ChuKu group by HuoYuName) N  
    ON M.HuoYuName=N.HuoYuName"
      

  4.   

    试试select ... Num=(isnull(M.Num1,0)-isnull(N.Num2,0))
    PS:楼主的结贴率有待提高喔.