需要显示一个虚拟月份 – Oracle SQL
发布时间:2021-03-16 01:04:55 所属栏目:站长百科 来源:网络整理
导读:对于月费报告目的,需要显示如下所述的输出.只有当月支付费用时才会在表格中输入数据,否则表格中不会显示该月份. 执行查询 select reg_id,dop,to_char(dop,'FMMonth,YYYY') Month,status from fees_status where dop between ('1-Jul-2012') and ('1-Dec-2012
对于月费报告目的,需要显示如下所述的输出.只有当月支付费用时才会在表格中输入数据,否则表格中不会显示该月份. 执行查询 select reg_id,dop,to_char(dop,'FMMonth,YYYY') Month,status from fees_status where dop between ('1-Jul-2012') and ('1-Dec-2012') 输出是 REG_ID DOP MONTH STATUS AE-8 7/1/2012 July,2012 PAID AE-8 9/1/2012 September,2012 PAID AE-8 11/1/2012 November,2012 PAID AE-8 12/1/2012 December,2012 PAID 对于报告目的,需要输出为 REG_ID DOP MONTH STATUS AE-8 7/1/2012 July,2012 PAID AE-8 8/1/2012 August,2012 NOTPAID AE-8 9/1/2012 September,2012 PAID AE-8 10/1/2012 October,2012 NOTPAID AE-8 11/1/2012 November,2012 PAID 有人可以帮助显示上面提到的输出吗? 解决方法您可以使用外部联接的 partition by扩展来实现此目的.这是一个例子:-- sample of data from your question SQL> with fees_status(REG_ID,DOP,MONTH1,STATUS) as( 2 select 'AE-8',to_date('7/1/2012','MM/DD/YYYY'),'July,2012','PAID' from dual union all 3 select 'AE-8',to_date('9/1/2012','September,'PAID' from dual union all 4 select 'AE-8',to_date('11/1/2012','November,'PAID' from dual union all 5 select 'AE-8',to_date('12/1/2012','December,'PAID' from dual 6 ),-- dates 7 dates(dt) as( 8 select add_months(to_date('01/01/2012','mm/dd/yyyy'),level - 1) 9 from dual 10 connect by level <= 12 11 ) 12 select t.reg_id 13,d.dt as dop 14,to_char(d.dt,'fmMonth,YYYY') as month1 15,Nvl(t.status,'NOTPAID') as status 16 from fees_status t 17 partition by (t.reg_id) 18 right outer join dates d 19 on (d.dt = t.dop) 20 where d.dt between (to_date('1-Jul-2012','dd-Month-yyyy')) 21 and (to_date('1-Dec-2012','dd-Month-yyyy')) 22 ; REG_ID DOP MONTH1 STATUS ------ ----------- -------------------- ------- AE-8 01-Jul-12 July,2012 PAID AE-8 01-Aug-12 August,2012 NOTPAID AE-8 01-Sep-12 September,2012 PAID AE-8 01-Oct-12 October,2012 NOTPAID AE-8 01-Nov-12 November,2012 PAID AE-8 01-Dec-12 December,2012 PAID 6 rows selected (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐