如何在SQL中区分一列和另一列的总和?

时间:2016-05-08 07:23:54

标签: sql oracle

我有一个查询

select b.*  from TABLE a, TABLE b 
  where 
    a.hdr_pk_id = b.hdr_fk_id 
      and a.hdr_pk_id in (select bonus_pk_id
    from BONUS_TABLE
        where
            STATUS='I' 
            and TYPE=2 
            )) ;

返回样本数据:

empno empname amount 
1     a       100
2     b       200
3     c       300
1     a       400
2     b       100
3     c       200

我需要明确的empno和sum(金额) 例如,我如何获得像

这样的数据
empno empname amount
1     a       500
2     b       300
3     c       500

2 个答案:

答案 0 :(得分:1)

SELECT b.empno, b.empname, SUM(amount) 
FROM TABLE a, TABLE b 
WHERE a.hdr_pk_id = b.hdr_fk_id 
  and a.hdr_pk_id in (select bonus_pk_id
  from BONUS_TABLE
    where
        STATUS='I' 
        and TYPE=2))
GROUP BY b.empno, b.empname;

答案 1 :(得分:0)

我不确定但是试试

 select distinct b.* ,sum(b.amount) over (partition by empname) from TABLE a,TABLE b 
   where 
  a.hdr_pk_id = b.hdr_fk_id 
  and a.hdr_pk_id in (select bonus_pk_id
  from BONUS_TABLE
    where
        STATUS='I' 
        and TYPE=2 
        )) ;