有对SQL熟悉的信息朋友没有,
我想查这样两张表,A表 代码agdid,数量akcsl; B 表btgdid代码 bkcsl数量 我想查A,B表代码相同,但是A表的汇总数量不为0,而B表的汇总数量为0,注:AB两表一个代码都有几个数量,要汇总,怎么样查先谢谢了!

解决方案 »

  1.   

    with t1 as (select  agdid,sum(akcsl) akcsl from a group by agdid),
         t2 as (select btgdid,sum(bkcsl) bkcsl rom b group by btgdid)
    select * from t1 ,t2 where agdid= btgdid and akcsl<>0 and bkcsl =0;
      

  2.   


    select a.agdid,a.akcsl,b.bkcsl
       from(select agdid,
                   sum(akcsl) akcsl 
              from a 
             group by agdid
           )a,
          (select btgdid,
                  sum(bkcsl) bkcsl 
             from b 
            group by btgdid
          )b
     where a.agdid= b.btgdid and a.akcsl<>0 and a.bkcsl =0;
      

  3.   

    上面的是对的
    WITH A AS(
    SELECT 'A' agdid, 1 akcsl FROM DUAL
    UNION ALL
    SELECT 'A' , 2  FROM DUAL
    UNION ALL
    SELECT 'A' , -3  FROM DUAL
    UNION ALL
    SELECT 'B' , 2  FROM DUAL
    UNION ALL
    SELECT 'B' , -3  FROM DUAL
    UNION ALL
    SELECT 'C' , 1  FROM DUAL
    UNION ALL
    SELECT 'C' , 2  FROM DUAL
    UNION ALL
    SELECT 'C' , 3  FROM DUAL
    ),
    B AS(
    SELECT 'A' btgdid, 1 bkcsl FROM DUAL
    UNION ALL
    SELECT 'A' , 2  FROM DUAL
    UNION ALL
    SELECT 'A' , -3  FROM DUAL
    UNION ALL
    SELECT 'B' , 3  FROM DUAL
    UNION ALL
    SELECT 'B' , -3  FROM DUAL
    UNION ALL
    SELECT 'C' , 1  FROM DUAL
    UNION ALL
    SELECT 'C' , 2  FROM DUAL
    UNION ALL
    SELECT 'C' , 3  FROM DUAL
    )
    select a.agdid,a.akcsl,b.bkcsl
    FROM
    (select agdid,sum(akcsl) akcsl from a group by agdid)a,
    (select btgdid,sum(bkcsl) bkcsl from b group by btgdid)b
     where a.agdid= b.btgdid and a.akcsl<>0 and b.bkcsl =0;
    结果:
    AGDID  AKCSL  BKCSL
    --------------------
    B   -1    0
      

  4.   


    select agdid,a_sum,b_sum
    from (select agdid,sum(akcsl) a_sum from a group by agdid) t,
    (select btgdid,sum(bkcsl) b_sum from a group by btgdid) s
    where t.agdid=s.btgdid and t.a_sum<>0 and s.b_sum=0
      

  5.   


    select a.agid,sum(a.akcsl) akcsl,sum(b.bkcsl) bkcsl
    from table1 a,table 2 b
    where a.agid=b.agid
    group by a.agid
    having sum(a.akcsl)<>0 and sum(b.bkcsl)=0