Oracle 总计列和行

标签 oracle sum row

我有这个表是另一个查询的结果

STATUS          R1  R2  R3  R4  R5  R6  R7  R8  R9
----------------------------------------------------
ACCEPTED        322 241 278 473 575 595 567 449 605
ADECUACIONES    0   0   0   0   2   0   1   0   50
AET             0   0   2   0   0   0   0   0   11
EXECUTED        0   80  1   18  9   57  34  30  20
IN PROCESS      0   0   0   0   0   4   25  2   112
FREQ            0   55  2   76  25  117 7   73  48
INSTALL         1   4   1   10  5   14  2   13  62
WO INSTALL      9   2   51  24  143 17  15  59  16
WOT VL          0   1   0   0   1   0   0   0   0
OTHER          22   7   20  28  44  30  6   6   109
PROG            1   0   1   0   0   2   3   0   0
PTE PROG        0   5   0   0   0   0   3   19  93
TMX             0   0   0   28  4   8   11  3   14
PROJ            0   1   12  26  13  8   0   2   4

我期望的是这个
STATUS          R1  R2  R3  R4  R5  R6  R7  R8  R9  TOTAL
----------------------------------------------------------
ACCEPTED        322 241 278 473 575 595 567 449 605 4105
ADECUACIONES    0   0   0   0   2   0   1   0   50  53
AET             0   0   2   0   0   0   0   0   11  13
EXECUTED        0   80  1   18  9   57  34  30  20  249
IN PROCESS      0   0   0   0   0   4   25  2   112 143
FREQ            0   55  2   76  25  117 7   73  48  403
INSTALL         1   4   1   10  5   14  2   13  62  112
WO INSTALL      9   2   51  24  143 17  15  59  16  336
WOT VL          0   1   0   0   1   0   0   0   0   2
OTHER          22   7   20  28  44  30  6   6   109 272
PROG            1   0   1   0   0   2   3   0   0   7
PTE PROG        0   5   0   0   0   0   3   19  93  120
TMX             0   0   0   28  4   8   11  3   14  68
PROJ            0   1   12  26  13  8   0   2   4   66
TOTAL           355 396 368 683 821 852 674 656 1144 5949

我一直在玩grouping()rollup() ,但我总是得到重复的行和不需要的空值。

最佳答案

如果你有问题, grouping_id 函数会帮助你。

(您可以选择 grouping_id(col),也可以选择 grouping_id(col1, col2, col3, etc..))

但你的情况更简单。

它像是:

drop table fg_test_group;
create table fg_test_group (a number, b number, c number, d number);

insert into fg_test_group values (1, 2, 3, 4);
insert into fg_test_group values (2, 2, 3, 4);
insert into fg_test_group values (3, 2, 3, 4);


select  nvl(to_char(a), 'total') as a , sum(b), sum(c), sum(d), grouping_id(a)
from fg_test_group
group by rollup (a) 
;

在您的情况下,其中 a 是 Status。

关于Oracle 总计列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9733918/

相关文章:

php - 使用 group by 函数对多列进行 sum()

php - Mysql SUM() 与 PHP 普通加法运算

mysql - Complex Join - 涉及日期范围和总和

oracle - PL/SQL发生错误时退出执行

oracle - 戈朗oci8 : error adding symbols: File in wrong format

c# - 将特定数据从 1 个数据表传输到另一个错误

sql - PHPMyAdmin 匹配具有两个或多个字符串的行

html - 在一行中对齐循环输出

sql - Oracle中修改ROUND UP函数

database - Oracle Lite - 无法连接到新创建的数据库。 [POL-3013]