如何从两列中汇总数据并在oracle SQL中对其进行分区

时间:2016-03-23 12:17:15

标签: sql oracle

我有以下表格:

COLA    COLB    COLC    COLD
CSA   201603    0      10
ABC   201603    0      800
PQR   201603    0      400
ABC   201603    0      1000
CSA   201603    0      800
PQR   201604    1000   0

并需要以下列形式输出:

COLA    COLB    COLC    COLD
ABC   201603    0      1000
ABC   201603    0      800
PQR   201604    1000     0

这里的条件是:COLA和COLB的组合作为键,因此只打印具有COLC + COLD> 1000的值,休息忽略

需要oracle SQL用于上面的输出,pl建议!

2 个答案:

答案 0 :(得分:2)

你的直觉是正确的。一种简单的方法是使用分析函数:

select cola, colb, colc, cold
from (select t.*, sum(colc + cold) over (partition by cola, colb) as sumab
      from t
     ) t
where sumab >= 1000;

答案 1 :(得分:1)

SELECT COLA,
       COLB,
       COLC,
       COLD
FROM   (
  SELECT COLA,
         COLB,
         COLC,
         COLD,
         SUM( COLC + COLD ) OVER ( PARTITION BY COLA, COLB ) AS total
  FROM   table_name
)
WHERE  total > 1000;