读书人

查询怎么讲数据按照指定区间进行区分

发布时间: 2011-12-29 22:09:38 作者: rapoo

查询如何讲数据按照指定区间进行区分,望高手指教
需求:表A

AAC001 ALC034
0001 2011-06-25
0002 2011-05-25


需要查询的结果是,将ALC034与当前日期进行比如,将相差的月份罗列出来。

假设今日为2011-08-24,期望得到的结果集如下:

AAC001 ******
0001 2011-07
0001 2011-08
0002 2011-06
0002 2011-07
0002 2011-08

[解决办法]

SQL code
[SYS@myorcl] SQL>WITH T1 AS  2   (SELECT '0001' AAC001, DATE '2011-06-25' ALC034  3      FROM DUAL  4    UNION  5    SELECT '0002' AAC001, DATE '2011-05-25' ALC034 FROM DUAL)  6  SELECT AAC001, COLUMN_VALUE  7    FROM T1,  8         TABLE(CAST(MULTISET  9                    (SELECT TO_CHAR(ADD_MONTHS(TRUNC(ALC034, 'mm'), LEVEL), 10                                    'yyyy-mm') 11                       FROM DUAL 12                     CONNECT BY LEVEL <= 13                                MONTHS_BETWEEN(TRUNC(SYSDATE, 'mm'), 14                                               TRUNC(ALC034, 'MM'))) AS 15                    SYS.ODCIVARCHAR2LIST));AAC0 COLUMN_VALUE---- --------------------0001 2011-070001 2011-080002 2011-060002 2011-070002 2011-08[SYS@myorcl] SQL> 

读书人网 >oracle

热点推荐