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

Oracle 动态生成SQL日期

askTom 2018-06-14
592

问题描述

我有一个过程,返回给定帐号和日期的帐户状态。例如,如果我插入以下内容

选择包。程序名称 (a。acctnbr,日期)
从帐户表a
其中a。acctnbr = 123456

这将返回10个状态代码中的任何一个 (即ACT、CLS、APPR、UNO……)

account_table对每个成员都有多个帐户记录,我想按成员编号将这些记录与成员编号和处于特定状态的帐户计数进行分组,例如 “我处于ACT状态的帐户计数是多少?”
没有函数,该查询就足够简单了:

选择一个。member,count(*)
从帐户表a
其中包。程序名称 (a。acctnbr,日期) = 'ACT'
和a。member = 456
按成员分组

返回:

会员计数 (*)
456 15

我真正需要的是使用pack。procedure_name(a。acctnbr,date) proc并返回过去xx个月末的所有行,
例如,将我的帐户分组为过去xx个月末的状态 = 'ACT'

输出看起来像这样:

月末 | 会员 | 计数 (*)
01/31/2014 456 15
02/28/2014 456 15
03/31/2014 456 15
04/30/2014 456 15
05/31/2014 456 14
06/30/2014 456 13
07/31/2014 456 13
08/31/2014 456 11


04/30/2018 456 10
05/31/2018 456 9

I was playing around with something from a previous post to get the month end dates, per below。
选择rownum、last_day (添加 _ 月 (至 _ 日期 ('01/01/2014' 、 '毫米/日/年') 、rownum -1)) mthend、last_day (添加 _ 月 (系统日期,-1))-last_day (添加 _ 月 (至 _ 日期 ('01/01/2014' 、 '毫米/日/年') 、rownum -3))
从所有对象中
其中rownum <= 最后一天 (add_months(sysdate,-1)) -最后一天 (add_months(to_date('01/01/2014 ','mm/dd/yyy'),rownum-3)

I am having trouble figuring out how to do this, any help would be much appreciated。

谢谢,

kev

专家解答

从 “现在” 开始的最后6个月末可以通过以下方式获得:

SQL> select last_day(add_months(trunc(sysdate,'MM'),-1*rownum+1)) from dual
  2  connect by level <= 6;

LAST_DAY(
---------
30-JUN-18
31-MAY-18
30-APR-18
31-MAR-18
28-FEB-18
31-JAN-18

6 rows selected.


从任何给定日期开始,只需替换上面的 'sysdate',例如

SQL> select last_day(add_months(trunc(date '2014-04-13','MM'),-1*rownum+1)) from dual
  2  connect by level <= 6;

LAST_DAY(
---------
30-APR-14
31-MAR-14
28-FEB-14
31-JAN-14
31-DEC-13
30-NOV-13


这就是你的想法吗?

然后可以成为您刚刚加入现有查询的来源

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

评论