说明:1:3张表,tabA,tabB,tabC,
      2:3张表都有字段,hpzl,hphm,
要求:根据hpzl,hphm 分组,并统计其次数,A表,hpzl,hphm和B表hpzl,hphm 相同,则次数相加。

解决方案 »

  1.   

    就是统计出,这3张表中hpzl,hphm 有多少条,
    结果就是3列,hpzl,hphm,次数,这3列。
      

  2.   


    --不知道是不是想要这样的:
    select a.hpzl,a.hphm,count(*)次数 
    from tabA a,tabB b
    where a.hpzl=b.hpzl and a.hphm=b.hphm
    and exists(select 1 from tabC c where a.hpzl=c.hpzl and a.hphm=c.hphm)
      

  3.   

    --替paddy写完
    select a.hpzl,a.hphm,count(*)次数 
    from tabA a,tabB b
    where a.hpzl=b.hpzl and a.hphm=b.hphm
    and exists(select 1 from tabC c where a.hpzl=c.hpzl and a.hphm=c.hphm)
    group by a.hpzl,a.hphm
      

  4.   

    提示不是单组分组函数,意思比如说,tabA,hpzl,hphm,和tabB,或tabC中的hpzl,hphm相同,后面次数就加起来,不相同的就依次显示就行了。
      

  5.   


    --难道是这样?楼主还是最好给点数据和结果,好理解些
    select a.hpzl,a.hphm,count(*)次数 
    from tabA a,tabB b,tabC c
    where (a.hpzl=b.hpzl and a.hphm=b.hphm)
    or (a.hpzl=c.hpzl and a.hphm=c.hphm)
    group by a.hpzl,a.hphm
      

  6.   

    select a.hpzl,a.hphm,sum(case when (a.hpzl = b.hpzl and a.hphm = b.hphm) or (a.hpzl = c.hpzl and a.hphm = c.hphm) then 1 else 0 end)[次数]
    from a,b,c
    where a.id = b.id and a.id = c.id
      

  7.   


    select a.hpzl,a.hphm,isnull(a.num,o) + isnull(b.num,0) + isnull(c.num,0)  as num
    from a inner join b on a.hpzl = b.hpzl and a.hphm = b.hphm
    inner join c on a.hpzl = c.hpzl and a.hphm = c.hphm--或者把inner join 换成 left join
      

  8.   


    -- 打错了,是   isnull(a.num,0)
      

  9.   

    你不在sql server版呆着,怎么跑这里了呢?
    isnull是sql server 的语法吧,oracle是nvl(a.num,0)
      

  10.   


    --试试 没看清你的意图select hpzl,hphm,count(*)
    from (select hpzl,hphm from taba
    union all
    select hpzl,hphm from tabb
    union all
    select hpzl,hphm from tabc)
    group by hpzl,hphm 
      

  11.   

    如果ABC三个表对你来说不用区分,仅仅是对这三个表的所有hpzl,hphm进行统计,那么下面这个SQL就够了