Oracle - 如何条件SUM两行

时间:2016-05-02 09:59:02

标签: sql oracle

我有这样的记录:

if (!matcher.group(1).isEmpty())

如何求和AMOUNT,其中LINE_NO 1与LINE_NO 1001相加,LINE_NO 2与LINE_NO 1002相加等等

这是我想要达到的结果。

|JOURNAL_NO|LINE_NO|AMOUNT|ACC_CODE|
|00001     |      1|  1800|562300C |
|00001     |      2|   900|562300C |
|00001     |      3|   450|562300C |
|00001     |   1001|   200|123222C |
|00001     |   1002|   100|123222C |
|00001     |   1003|    50|123222C |
|00002     |      1|  2700|562100C |
|00002     |      2|  4500|562100C |
|00002     |   1001|   300|123222C |
|00002     |   1002|   500|123222C |

1 个答案:

答案 0 :(得分:2)

有一个派生表,您可以使用案例表达式来调整LINE_NO'> 1000。

select JOURNAL_NO, LINE_NO, SUM(AMOUNT), MAX(ACC_CODE)
from
(
select JOURNAL_NO,
       case when LINE_NO > 1000 then LINE_NO - 1000 else LINE_NO end as LINE_NO,
       AMOUNT, ACC_CODE
from tablename
) dt
group by JOURNAL_NO, LINE_NO