我想要一个将按行和按列总计的查询,我找到了一种计算按列计数但不按行计数的方法。
select nvl(to_char(R.LTHT_FLAG), 'total') as a,
SUM(CASE WHEN p.STATUS_CODE='0' OR p.STATUS_CODE='1' THEN 1 ELSE 0 END) K,
SUM(CASE WHEN p.STATUS_CODE='2' THEN 1 ELSE 0 END) W,
SUM(CASE WHEN p.STATUS_CODE='4' THEN 1 ELSE 0 END) C,
SUM(CASE WHEN p.STATUS_CODE='6' THEN 1 ELSE 0 END) R
from WORKASSIGNMENT P,RESOURCES R WHERE P.EMP_CODE=R.EMP_CODE
group by rollup (R.LTHT_FLAG);
以下查询的输出是按列计数,类似。
A K W C R Total
DEVELOPMENT 1 18 397 0 ?
HT 43 21 673 0 ?
LT 83 14 7955 60 ?
SLD 306 9 4621 24 ?
----------------------------------------
total 433 62 13646 84 ?
但现在我想按行计算此输出
请帮助我逐行获取总和
只需添加所有列即可获得每一行的总数。
例如,
SQL> WITH sample_data AS(
2 SELECT 'DEVELOPMENT' A, 1 k, 18 w, 397 c, 0 r FROM dual UNION ALL
3 SELECT 'HT' A, 43 k, 21 w, 673 c, 0 r FROM dual UNION ALL
4 SELECT 'LT' A, 83 k, 14 w, 7955 c, 60 r FROM dual UNION ALL
5 SELECT 'SLD' A, 306 k, 9 w, 4621 c, 24 r FROM dual
6 )
7 -- end of sample_data mimicking real table
8 SELECT t.*, k+w+c+r total FROM sample_data t;
A K W C R TOTAL
----------- ---------- ---------- ---------- ---------- ----------
DEVELOPMENT 1 18 397 0 416
HT 43 21 673 0 737
LT 83 14 7955 60 8112
SLD 306 9 4621 24 4960
SQL>
在上面,而不是sample_data
,将您当前的SQL作为子查询放在FROM子句中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句