问题描述
嗨,团队
LiveSQL链接中提供的代码示例。
预期结果:
当前SQL的结果:
谢谢...
LiveSQL链接中提供的代码示例。
预期结果:
Mgmt1 State1 18900 1786 Mgmt1 State2 28900 2786 Mgmt1 SUB_TOTAL 47800 4572 Mgmt2 State1 38900 3786 Mgmt2 State2 48900 4786 Mgmt2 SUB-TOTAL 87800 8572 Mgmt3 State1 58900 5786 Mgmt3 SUB_TOTAL 58900 5786 TOTAL (null) 194500 18930复制
当前SQL的结果:
Mgmt1 State1 18900 1786 Mgmt1 State2 28900 2786 Mgmt1 (null) 47800 4572 Mgmt2 State1 38900 3786 Mgmt2 State2 48900 4786 Mgmt2 (null) 87800 8572 Mgmt3 State1 58900 5786 Mgmt3 (null) 58900 5786 (null) (null) 194500 18930复制
谢谢...
专家解答
使用grouping_id。
将此传递给您的group by中的列。然后它会返回一个数值。
结果是通过连接当前行是否是小计 (1) 或不是 (0) 返回的二进制值来计算的。
例如,该行:
是ent_type的小计,但不是ent_name,它以二进制 = 1十进制给出01
和
是两列的小计,给出11二进制 = 3十进制。
总的来说,这给出了:
您所需要的只是一个大小写/解码表达式,以将这些值转换为所需的名称。
将此传递给您的group by中的列。然后它会返回一个数值。
结果是通过连接当前行是否是小计 (1) 或不是 (0) 返回的二进制值来计算的。
例如,该行:
ENT_NAME ENT_TYPE REC_COUNT OCCUPIED_STORAGE(MB) Mgmt195600 9144 复制
是ent_type的小计,但不是ent_name,它以二进制 = 1十进制给出01
和
ENT_NAME ENT_TYPE REC_COUNT OCCUPIED_STORAGE(MB)389000 37860 复制
是两列的小计,给出11二进制 = 3十进制。
总的来说,这给出了:
CREATE TABLE tab_ent_stats( ent_name VARCHAR2(100), ent_type VARCHAR2(100), rec_count NUMBER, occupied_storage NUMBER ); INSERT INTO tab_ent_stats VALUES('Mgmt1','State1',18900,1786); INSERT INTO tab_ent_stats VALUES('Mgmt1','State2',28900,2786); INSERT INTO tab_ent_stats VALUES('Mgmt2','State1',38900,3786); INSERT INTO tab_ent_stats VALUES('Mgmt2','State2',48900,4786); INSERT INTO tab_ent_stats VALUES('Mgmt3','State1',58900,5786); COMMIT; SELECT ent_name, ent_type, SUM(rec_count) AS rec_count, SUM(occupied_storage) AS "OCCUPIED_STORAGE(MB)", grouping_id(ent_name, ent_type) grp FROM tab_ent_stats GROUP BY ROLLUP (ent_name,ent_type) ORDER BY ent_name,ent_type; ENT_NAME ENT_TYPE REC_COUNT OCCUPIED_STORAGE(MB) GRP Mgmt1 State1 37800 3572 0 Mgmt1 State2 57800 5572 0 Mgmt195600 9144 1 Mgmt2 State1 77800 7572 0 Mgmt2 State2 97800 9572 0 Mgmt2 175600 17144 1 Mgmt3 State1 117800 11572 0 Mgmt3 117800 11572 1 389000 37860 3 复制
您所需要的只是一个大小写/解码表达式,以将这些值转换为所需的名称。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1447次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
878次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
539次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
494次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
425次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
366次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
311次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
279次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
266次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
264次阅读
2025-03-19 14:41:51