注意:此问题适用于sql和oracle,我们没有创建临时表或存储过程的权限。
数据库有两个表。
一个表有一个月结束日期字段和一个标识“会计月”标签的文本字段。
第二个表按日期(mm/dd/yyyy)列出了相关的数字数据。
我们需要检索第二个表数据(求和的数字)分组由相关的“财政月”在表1中找到。
在一个查询或使用cte或更好的解决方案中,如何对表1执行某种查找,以检索表2中的mm/dd/yyy日期应分组的会计月。
表1(会计月结束日期)
2015-05-29-财政月为“2015年5月”
2015-06-30-财政月为“2015年6月”
2015-07-31-会计月为“2015年7月”
表2(mm/dd/yyyy)需要按会计月进行汇总和分组
2015-05-29应在“2015年5月”分组
2015-06-30应分组为“2015年6月”
1条答案
按热度按时间w3nuxt5m1#
因此,我使用的方法是为特定的会计月创建一系列日期。因为您有每个会计月的最后日期,所以可以将上一个日期作为上一个会计月的结束日期。当然,这是一个硬限制,因为财政月表中的第一个月没有上个月的日期(我使用的是一年中的1月1日)。
然后,当您将它与每日数据连接起来时,可以使用这两个日期来确定数据属于哪个会计月。
要获取上一个会计月的结束日期,我们可以使用
LAG
使用月份对行进行排序的分析函数。其余的查询非常简单。这就是结果(我冒昧地在daily数据表中添加了几行,只是为了显示查询正在工作)
现在需要做的就是使用结果集并执行分组和聚合。