我希望在Oracle 11中将行分成月带。
例如,假设我有模式:
CREATE TABLE MY_TABLE (
A_FIELD VARCHAR2(45),
START_DATE DATE,
END_DATE DATE
);包含如下条目:"foo", 1-1-2011, 1-1-2012
有没有一种方法可以查询表,这样我就可以得到如下的结果集:
"foo", Jan-11
"foo", Feb-11
"foo", Mar-11
"foo", Apr-11
"foo", May-11
.....
"foo", Jan-12我已经尝试了各种方法,比如CONNECT BY LEVEL,MONTHS_BETWEEN等,但我似乎不能很好地理解它。
谢谢你的帮助。
发布于 2012-01-26 05:39:43
尝尝这个。在这个解决方案中有几个假设。其中之一是end_date和start_date之间的间隔不超过200个月-您可以根据需要调整查询中的200个月。第二个假设是一个月中的某一天总是相同的。如果不是这样,您可以很容易地调整查询以完全忽略这一天。但它应该能让你达到99%的目标--如果你需要澄清,请告诉我。
select a.A_FIELD, to_char(add_months(a.START_DATE,r), 'Mon-yy') as display_month
from MY_TABLE a, (
select rownum-1 r
from all_objects
where rownum <= 200) b
where add_months(trunc(a.START_DATE,'mm'),r) <= trunc(a.END_DATE,'mm')
order by A_FIELD, b.rhttps://stackoverflow.com/questions/9010176
复制相似问题