我有这样的记录:
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 |
答案 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