问题描述
下午好,汤姆!我在中间总数的查询中遇到了困难 (组将汇总)。您可以告诉如何将具有条件应用于中间结果。
总和 (Proc)<7
我需要结果
总和 (Proc)<7
with query1 as ( select '123' schet, '1111101' INN, 'OrgName' nameorg, 12.12 SummAll, 123.12 Summ1, 4.04 Proc, 'Ranch1' fil from dual union select '124' , '1111102' , 'OrgName1' , 1.01 , 1.02 , 6.23 , 'Ranch2' from dual union select '125' , '1111103' , 'OrgName3' , 2.02 , 2.02 , 2.02 , 'Ranch1' from dual union select '126' , '1111103' , 'OrgName33' , 3.03 , 3.03 , 3.03 , 'Ranch3' from dual union select '127' , '1111105' , 'OrgName11' , 4.04 , 4.04 , 4.24 , 'Ranch1' from dual union select '128' , '1111105' , 'OrgName12' , 5.05 , 5.05 , 5.25 , 'Ranch2' from dual union select '129' , '1111107' , 'OrgName111' , 6.06 , 6.06 , 6.26 , 'Ranch1' from dual union select '130' , '1111107' , 'OrgName122' , 7.07 , 7.07 , 7.27 , 'Ranch2' from dual union select '131' , '1111107' , 'OrgName133' , 8.08 , 8.08 , 8.28 , 'Ranch3' from dual ) select * from ( select INN, decode(grouping_id(INN,nameorg),1,'Всего по INN '||INN||':',3,'Итого:',nameorg) nameorg, schet, fil, sum(SummAll) SummAll, sum(Summ1) Summ1, sum(Proc) Proc, decode(grouping_id(INN,nameorg),3,1,0) seq_1, decode(grouping_id(INN,nameorg),1,1,0) seq_2 from query1 group by rollup(INN, (nameorg, schet, fil)) -- having Proc < 7 order by seq_1,INN,seq_2,nameorg )复制
我需要结果
1 1111101 OrgName 123 Ranch1 12.12 123.12 12.04 0 0 2 1111101 Total for INN 1111101: 12.12 123.12 12.04 0 1 3 1111102 OrgName1 124 Ranch2 1.01 1.02 6.23 0 0 4 1111102 Total for INN 1111102: 1.01 1.02 6.23 0 1 5 1111103 OrgName3 125 Ranch1 2.02 2.02 2.02 0 0 6 1111103 OrgName33 126 Ranch3 3.03 3.03 3.03 0 0 7 1111103 Total for TIN 1111103: 5,05 5,05 5,05 0 1复制
专家解答
所以你想显示小计小于某个值的所有行,加上小于该值的小计行?
如果是这样,您可以通过分析来做到这一点!
在结果上,如果您的汇总,则获取每个 “INN” 和当前分组级别的总和。您可以通过在分组列中添加添加grouping_id来做到这一点:
然后按inn和分组级别使用:
然后,您可以过滤该总和的结果以找到该总和 <7的结果:
如果是这样,您可以通过分析来做到这一点!
在结果上,如果您的汇总,则获取每个 “INN” 和当前分组级别的总和。您可以通过在分组列中添加添加grouping_id来做到这一点:
grouping_id ( inn, nameorg, schet, fil )复制
然后按inn和分组级别使用:
sum(proc) over (partition by inn, grp)复制
然后,您可以过滤该总和的结果以找到该总和 <7的结果:
with query1 as (select '123' schet, '1111101' inn, 'OrgName' nameorg, 12.12 summall, 123.12 summ1, 4.04 proc, 'Ranch1' fil from dual union select '124' , '1111102' , 'OrgName1' , 1.01 , 1.02 , 6.23 , 'Ranch2' from dual union select '125' , '1111103' , 'OrgName3' , 2.02 , 2.02 , 2.02 , 'Ranch1' from dual union select '126' , '1111103' , 'OrgName33' , 3.03 , 3.03 , 3.03 , 'Ranch3' from dual union select '127' , '1111105' , 'OrgName11' , 4.04 , 4.04 , 4.24 , 'Ranch1' from dual union select '128' , '1111105' , 'OrgName12' , 5.05 , 5.05 , 5.25 , 'Ranch2' from dual union select '129' , '1111107' , 'OrgName111' , 6.06 , 6.06 , 6.26 , 'Ranch1' from dual union select '130' , '1111107' , 'OrgName122' , 7.07 , 7.07 , 7.27 , 'Ranch2' from dual union select '131' , '1111107' , 'OrgName133' , 8.08 , 8.08 , 8.28 , 'Ranch3' from dual ), grps as ( select * from (select inn, decode ( grouping_id ( inn,nameorg ) ,1,'Всего по INN '||inn ||':',3,'Итого:',nameorg ) nameorg, schet, fil, sum ( summall ) summall, sum ( summ1 ) summ1, sum ( proc ) proc, decode(grouping_id(INN,nameorg),3,1,0) seq_1, decode(grouping_id(INN,nameorg),1,1,0) seq_2, grouping_id ( inn, nameorg, schet, fil ) grp from query1 group by rollup ( inn, ( nameorg, schet, fil ) ) ) ), tots as ( select grps.*, sum(proc) over (partition by inn, grp) sm from grps ) select * from tots where sm < 7 order by inn nulls last,grp,nameorg; INN NAMEORG SCHET FIL SUMMALL SUMM1 PROC SEQ_1 SEQ_2 GRP SM 1111101 OrgName 123 Ranch1 12.12 123.12 4.04 0 0 0 4.04 1111101 ????? ?? INN 1111101: 12.12 123.12 4.04 0 1 7 4.04 1111102 OrgName1 124 Ranch2 1.01 1.02 6.23 0 0 0 6.23 1111102 ????? ?? INN 1111102: 1.01 1.02 6.23 0 1 7 6.23 1111103 OrgName3 125 Ranch1 2.02 2.02 2.02 0 0 0 5.05 1111103 OrgName33 126 Ranch3 3.03 3.03 3.03 0 0 0 5.05 1111103 ????? ?? INN 1111103: 5.05 5.05 5.05 0 1 7 5.05复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
597次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
576次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
491次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
474次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
459次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
434次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
434次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
419次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
367次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05