我正在使用汇总来获取一些聚合并以表格形式将它们显示给用户。
但是,我想确保在我的汇总中,汇总的行数相同,即最大子集的数量。
我认为一个例子让我想要的更清楚,所以我在下面的 oracle 中设置了一个简单的例子:
create table test (
co_name varchar2(100),
rtype number,
some_count number
) ;
insert all
into test (co_name, rtype, some_count) values ('A', 1, 5)
into test (co_name, rtype, some_count) values ('A', 2, 6)
into test (co_name, rtype, some_count) values ('A', 3, 7)
into test (co_name, rtype, some_count) values ('B', 1, 8)
into test (co_name, rtype, some_count) values ('B', 2, 9)
SELECT * FROM DUAL
;
select * from test;
SELECT
co_name,
rtype,
count(some_count)
FROM test
GROUP BY ROLLUP(co_name, rtype)
这给了我以下结果:
CO_NAME RTYPE SOME_COUNT
A 1 5
A 2 6
A 3 7
A 18
B 1 8
B 2 9
B 17
B 35
您当然会注意到 B 只有两行 RTYPE - 1 和 2 这是因为有 0 行 CO_NAME = B AND RTYPE = 3
有没有办法让汇总返回的结果数量保持一致?我想看到以下内容:
CO_NAME RTYPE SOME_COUNT
A 1 5
A 2 6
A 3 7
A 18
B 1 8
B 2 9
B 3 0
B 17
35
这里的任何建议都会非常有帮助,因为我希望我的应用程序是愚蠢的,并且只需将结果制成表格,而不必考虑丢失的数据。我希望查询能给我所需的一切。
谢谢!
编辑:我是个笨蛋......在我上面的示例中,我想保持简单但犯了一个错误。而不是 RTYPES 是一组 {1,2,3} 可能值,想象它是一组 {'x','y','z'} 可能值......我确实将答案标记为答案,因为它回答了我问的问题,错在我:(