问题描述
我有5个使用union all的select语句 (在这里显示几个)
想要使用单个语句从表中获取收入。
所以基于和period_id>= 1009的条件
和Opp_Created_Date_Period_Id<= 1009 (以前的每个季度
其中1009表示yr 2018 Q2 (dim quater表中包含的数据看起来只有这样)
1008 - yr18 Q1
1007年第17季度 (季度)
等等。
-想拿以前的硬币。收入
-最重要的是,将period_id和Opp_Created_Date_Period_Id分别与每个季度进行比较,以产生该季度的收入。
-此期间id值继续下降,直到前五个季度
-这些只是参数
想要使用单个语句从表中获取收入。
所以基于和period_id>= 1009的条件
和Opp_Created_Date_Period_Id<= 1009 (以前的每个季度
其中1009表示yr 2018 Q2 (dim quater表中包含的数据看起来只有这样)
1008 - yr18 Q1
1007年第17季度 (季度)
等等。
-想拿以前的硬币。收入
-最重要的是,将period_id和Opp_Created_Date_Period_Id分别与每个季度进行比较,以产生该季度的收入。
-此期间id值继续下降,直到前五个季度
-这些只是参数
SELECT T1.PERIOD,NVL(Sum(Source_Rev),0) "SOURCE_REV" FROM MA_DIM_QUATER_DATA_TEST T1 LEFT JOIN ( Select Sum(REVENUE_SHARE) As "SOURCE_REV" ,MIN(period_id) as PERIOD From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0) AND period_id>=1009 AND Opp_Created_Date_Period_Id<=1009 UNION ALL Select Sum(REVENUE_SHARE) As "SOURCE_REV",MIN(period_id) as PERIOD From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0) AND period_id>=1009-1 AND Opp_Created_Date_Period_Id<=1009-1 UNION ALL Select Sum(REVENUE_SHARE) As "SOURCE_REV",MIN(period_id) AS PERIOD From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0) AND period_id>=1009-2 AND Opp_Created_Date_Period_Id<=1009-2 UNION ALL Select Sum(REVENUE_SHARE) As "SOURCE_REV",MIN(period_id) as PERIOD From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0) AND period_id>=1009-3 AND Opp_Created_Date_Period_Id<=1009-3 UNION ALL Select NVL(Sum(REVENUE_SHARE),0) As "SOURCE_REV" ,MIN(period_id) as "PERIOD" From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0) AND period_id>=1009-4 AND Opp_Created_Date_Period_Id<=1009-4 )T2 ON t1.id =t2.period where t1.id in (1009,1009-1,1009-2,1009-3,1009-4) GROUP BY t1.period order by t1.period复制
专家解答
仅关注T2,以下谓词始终为真:
以下是所有查询的共同点
所以这不能简化为:
AND (GEO_ID=0 OR 0=0) AND ( Strategic_Initiative_Id IN (0) OR ( COALESCE(NULL, 0))=0)复制
以下是所有查询的共同点
Where is_sourced!='Sourced'复制
所以这不能简化为:
( Select Sum(REVENUE_SHARE) As "SOURCE_REV" ,MIN(period_id) as PERIOD From Ma_Fact_Revenue_test Where is_sourced!='Sourced' AND ( ( period_id>=1009 AND Opp_Created_Date_Period_Id<=1009 ) or ( period_id>=1009-1 AND Opp_Created_Date_Period_Id<=1009-1 ) or ( period_id>=1009-2 AND Opp_Created_Date_Period_Id<=1009-2 ) or ( period_id>=1009-3 AND Opp_Created_Date_Period_Id<=1009-3 ) or ( period_id>=1009-4 AND Opp_Created_Date_Period_Id<=1009-4 ) )复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
635次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
616次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
511次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
506次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
474次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
452次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
448次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
447次阅读
2025-04-30 12:17:56
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
445次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
393次阅读
2025-04-17 09:30:30