有两个表:AA(name,aday(加班天数)),BB(name,bday(请假天数)),想实现下面的功能:如果AA表的name与BB表的name同一人,那就aday - bday,如果AA有而BB没有或者BB有而AA没有,也要显示在DBGrid中。即:AA               BBname  aday     name  bdayBB     1        BB    2CC     2        DD    1EE     1        EE    1
查询显示结果应该是:name     dayBB       -1EE       0CC       2DD       1哪位朋友帮忙一下,不胜感激!谢谢

解决方案 »

  1.   

    Select IsNull(A.Name,B.Name) as Name,IsNull(A.ADay,0) as ADay,IsNull(B.BDay,0) as BDay
     From AA A Full Join BB B On A.Name=B.Name这样的问题都在问,看来你们的项目比较尴尬
      

  2.   


    O(∩_∩)O~,我来完善一下select name, (aday - bday) as day from (Select nvl(A.aName,B.bName) as Name,nvl(A.ADay,0) as ADay,nvl(B.BDay,0) as BDay From AA A Full Join BB B On A.aName=B.bName)
      

  3.   


    select cc.name, sum(cc.aday) as [day] from (select name,aday from aa union all (select name,bday*-1 as aday from bb)) cc 
     
      

  4.   

    不好意思,上面的忘了group by 了
    select cc.[name], sum(cc.aday) as [day] from (select [name],aday from aa union all (select [name],bday*-1 as aday from bb)) cc group by cc.[name]