【问题标题】:Why this Hierarchical Query don't work?为什么这个分层查询不起作用?
【发布时间】:2015-11-25 01:45:17
【问题描述】:

给定:

| ID_Composite1 | ID_Composite2 | DateStart | DateEnd   |
| 1             | 2             | 11-24-2015| 03-11-2016|
| 2             | 4             | 8-11-2015 | 12-11-2015|

我需要得到:

| ID_Composite1 | ID_Composite2 | Month     |
| 1             | 2             | 11-24-2015|
| 1             | 2             | 12-24-2015|
| 1             | 2             |  1-24-2016|
| 1             | 2             |  2-24-2016|
| 1             | 2             |  3-11-2016|
| 2             | 4             | 8-11-2015 |
| 2             | 4             | 9-11-2015 |
| 2             | 4             | 9-11-2015 |

我尝试了最简化的情况(使用 level 和 connect by 生成仅几个月之间的范围)但我无法让它工作:

SQLFiddle

【问题讨论】:

  • 你想从日期开始或结束日期获取月份吗?
  • @Walucas 是的,从头到尾。

标签: sql oracle join hierarchy


【解决方案1】:

所以,我在你的 SQL 上强制了一个迭代器,以确保有足够的行来使事情正常工作....

检查一下:

    SELECT firstcompositekey, secondcompositekey, to_char(add_months(startmonth, iterator),'MM-YYYY') as month
 FROM test, 
   (SELECT LEVEL iterator FROM dual CONNECT BY LEVEL <= 1000) iterations
WHERE add_months(startmonth, iterator) <= endmonth
ORDER BY 1,3

这里是SQLFiddle

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多