暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 显示给定周期名称的所有日期数据

askTom 2017-03-29
356

问题描述

嗨,汤姆,

我需要传递一个gl period_name例如:-('jan-17') 到查询,并得到每个帐户的借方和贷方命中的总和。

但是这里的一个问题是,我还需要显示没有数据的任何日期的输出。

如果任何日期不包含任何数据,则借方和贷方的总和应为零。

例如;-

我做了一个查询


选择GCC.SEGMENT5帐户
,GJL。有效日期
,总和 (GJL.ACCOUNTED_DR) 借方
,总和 (GJL.ACCOUNTED_CR) 贷方
来自GL.GL_JE_HEADERS GJH
,GL.GL_JE_LINES GJL
,GL.Gl_code_组合GCC
其中GJH.JE_HEADER_ID = GJL.JE_HEADER_ID
和GJL。代码 _ 组合 _ id = GCC。代码 _ 组合 _ id
和GJH.PERIOD_NAME = 'jan-17'
和GJH.STATUS = 'P'
GCC分组。细分5
,GJL。有效日期
由GJL订购。有效日期,GCC。细分5;


但是,这将仅获取可用有效日期的数据。如果日期没有余额,则必须将总和显示为零。

请帮帮我!

专家解答

所以你有一个查询,只返回几个日期从你的时期,但你需要显示所有的?

在这种情况下,您需要一个包含您需要查看的所有日期的数据源。所以你的过程

-创建一个包含您的时期内所有日期的表格
-离开加入你的查询到这个日期
-Nvl/当您的查询不返回行时,合并总和以显示零

在下面的示例中,sales表仅包含1月中某些天的行。所以我已经动态生成了一个日期表。然后左加入了它。如果需要,您可以将其替换为真实的日期表 (如果出于任何原因需要排除非工作或其他日子,则很有用):

select time_id, sum(nvl(amount_sold, 0)) from SH.SALES s
where  trunc(time_id, 'mm') = date'1998-01-01' 
group  by time_id
order  by time_id;

TIME_ID               SUM(NVL(AMOUNT_SOLD,0))  
02-JAN-1998 00:00:00  798                      
03-JAN-1998 00:00:00  1,264                    
05-JAN-1998 00:00:00  306                      
06-JAN-1998 00:00:00  378                      
09-JAN-1998 00:00:00  5,100                    
10-JAN-1998 00:00:00  1,580                    
12-JAN-1998 00:00:00  1,092                    
14-JAN-1998 00:00:00  1,746                    
16-JAN-1998 00:00:00  308                      
20-JAN-1998 00:00:00  742                      
23-JAN-1998 00:00:00  312                      
28-JAN-1998 00:00:00  4,680                    
29-JAN-1998 00:00:00  546  

with dates as (
  select date'1997-12-31'+level dt from dual
  connect by level <= 31
) 
select dt, sum(nvl(amount_sold, 0)) from dates d
left   join SH.SALES s
on     d.dt = s.time_id
and    trunc(time_id, 'mm') = date'1998-01-01' 
group  by dt
order  by dt;

DT                    SUM(NVL(AMOUNT_SOLD,0))  
01-JAN-1998 00:00:00  0                        
02-JAN-1998 00:00:00  798                      
03-JAN-1998 00:00:00  1,264                    
04-JAN-1998 00:00:00  0                        
05-JAN-1998 00:00:00  306                      
06-JAN-1998 00:00:00  378                      
07-JAN-1998 00:00:00  0                        
08-JAN-1998 00:00:00  0                        
09-JAN-1998 00:00:00  5,100                    
10-JAN-1998 00:00:00  1,580                    
11-JAN-1998 00:00:00  0                        
12-JAN-1998 00:00:00  1,092                    
13-JAN-1998 00:00:00  0                        
14-JAN-1998 00:00:00  1,746                    
15-JAN-1998 00:00:00  0                        
16-JAN-1998 00:00:00  308                      
17-JAN-1998 00:00:00  0                        
18-JAN-1998 00:00:00  0                        
19-JAN-1998 00:00:00  0                        
20-JAN-1998 00:00:00  742                      
21-JAN-1998 00:00:00  0                        
22-JAN-1998 00:00:00  0                        
23-JAN-1998 00:00:00  312                      
24-JAN-1998 00:00:00  0                        
25-JAN-1998 00:00:00  0                        
26-JAN-1998 00:00:00  0                        
27-JAN-1998 00:00:00  0                        
28-JAN-1998 00:00:00  4,680                    
29-JAN-1998 00:00:00  546                      
30-JAN-1998 00:00:00  0                        
31-JAN-1998 00:00:00  0
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论