【问题标题】:oracle grand total row and column wise?oracle 总计行和列明智?
【发布时间】:2016-06-21 23:11:03
【问题描述】:

我想要一个可以按行和按列计算总数的查询,我找到了计算按列计数但没有按行计数的方法。

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 oracle sum oracle10g


    【解决方案1】:

    只需将所有列相加即可得到每行的总数。

    例如,

    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 子句中。

    【讨论】:

    • 由于我是这个概念的新手,我不理解上面的任何代码,请简化一点,不要指定核心值
    • 在您的查询中,您将获得 k,w,c,r 列,将其设为内部查询并在外部查询中添加这些列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多