类似树状图 用parentId区分啊
解决方案 »
- 请教高手plsql_memory.show_memory_usage怎么用啊
- IMP-00041 Warning: object created with compilation warnings
- oracle for AIX安装报错
- 这样的sql语句该怎么写?
- oracle 建表时 提示 SP2-0640: 未连接 在线等..
- 数据库查询问题~100分
- 请教各位高手如何按时间点恢复数据库
- oracale数据库问题,请大家做答!!!
- 我的人事考勤薪资简体中文网络版的新版本出来了,增加了一个代理,一高兴大量送分。
- shutdown后再次连接提示监听无法识别
- 求教各位大神怎么给查询出来的字段值命名
- 请教大神,这段SQL写的觉得太复杂,能否再优化,最好能把优化后的SQL写出来,oracle数据库。
sum(decode(length(科目编码),4,null,金额))
DECODE (
GROUPING (SUBJECTS.SUBJECTTYPE) + GROUPING (SUBJECTS.SUBJECTCODE),
1, (case when
(
SUBJECTS.SUBJECTTYPE='14010001'
and
(select count(subject_id) from CUSTOM_SUBJECTINFO where pid=SUBJECTS.ID and custom_id=SUBJECTS.CUSTOM_ID)=0
)
then
'资产小计'
else '其他' end),
2, '合计',
SUBJECTS.SUBJECTCODE)
SUBJECTCODE,(select count(subject_id) from CUSTOM_SUBJECTINFO where pid=SUBJECTS.ID and custom_id=SUBJECTS.CUSTOM_ID)=0这部分用来过滤掉一级科目不过这种方式不起作用,注:上面红色部分确实可以过滤,已测试
1,
DECODE(SUBJECTS.SUBJECTTYPE,
'14010001',
'资产小计',
'14010002',
'负债小计',
'14010003',
'损益小计',
'14010004',
'其他小计'),
2,
'合计',
SUBJECTS.SUBJECTCODE) SUBJECTCODE
from (明细结果) subjects
GROUP BY ROLLUP(SUBJECTS.SUBJECTTYPE,
(SUBJECTS.SUBJECTNAME, SUBJECTS.ID))
ORDER BY SUBJECTS.SUBJECTTYPE, SUBJECTS.SUBJECTCODE
DECODE(GROUPING (SUBJECTS.SUBJECTTYPE) + GROUPING (SUBJECTS.SUBJECTCODE),
0,
SUBJECTS.SUBJECTCODE,
sum(decode(
(select count(subject_id) from CUSTOM_SUBJECTINFO where pid=SUBJECTS.ID and custom_id=SUBJECTS.CUSTOM_ID)
,0,金额))
) SUBJECTCODE
from (明细结果) subjects
GROUP BY ROLLUP(SUBJECTS.SUBJECTTYPE,
(SUBJECTS.SUBJECTNAME, SUBJECTS.ID))
ORDER BY SUBJECTS.SUBJECTTYPE, SUBJECTS.SUBJECTCODE
rollup的记录用sum(decode)求和,其他记录直接返回金额
DECODE(GROUPING (SUBJECTS.SUBJECTTYPE) + GROUPING (SUBJECTS.SUBJECTCODE),
0,
金额,
sum(decode(
(select count(subject_id) from CUSTOM_SUBJECTINFO where pid=SUBJECTS.ID and custom_id=SUBJECTS.CUSTOM_ID)
,0,金额))
) 金额
(select G1,G2,C1,C2,C3,C4,0 AS L
FROM T
UNION ALL
SELECT G1,NULL AS G2,SUM(C1),SUM(C2),SUM(C3),SUM(C4),1 AS L
FROM T
WHERE NOT EXISTS (……)--写条件去掉一级科目
GROUP BY G1
UNION ALL
SELECT NULL G1,NULL AS G2,SUM(C1),SUM(C2),SUM(C3),SUM(C4),2 AS L
FROM T
WHERE NOT EXISTS (……)--写条件去掉一级科目
)ORDER BY G1,G2