表一数据:
科目 金额
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400希望得到如下结果:
5401 700
5401-2 700
5401-3201 700
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400请问sql该如何实现?
科目 金额
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400希望得到如下结果:
5401 700
5401-2 700
5401-3201 700
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400请问sql该如何实现?
where 科目 like substr(科目, 1, 4) || '%' --查以5401开头的
union
select sum(金额) from 表一
where 科目 like substr(科目, 1, 6) || '%' --查以5401-2开头的
...
以此类推substr的使用,查一下orcle文档,记不清了
select t.kemu,sum(t.moeny) from caiwu t
group by rollup(kemu)
ITEM VALUE
-------------------- ------
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400
SQL>
SQL> SELECT ITEM, SUM(VALUE)
2 FROM (SELECT SUBSTR(A.ITEM || '-', 1, INSTR(A.ITEM || '-', '-', 1, RN) - 1) ITEM,VALUE
3 FROM TEST1 A,
4 (SELECT ROWNUM RN FROM DUAL CONNECT BY ROWNUM <= 20) B)
5 WHERE ITEM IS NOT NULL
6 GROUP BY ITEM
7 ORDER BY ITEM
8 ;
ITEM SUM(VALUE)
------------------------------------------ ----------
5401 700
5401-2 700
5401-2-3201 700
5401-2-3201-1 100
5401-2-3201-12 200
5401-2-3201-2 400
6 rows selected
SQL>