我在Oracle SQL中的connect by函数有问题。我有以下数据:
| ID|开始日期|结束日期|价值|
| - -----|- -----|- -----|- -----|
| 1| 2019 - 07 - 22 10:30:00| 2019 - 07 - 22 11:45:00|不适用|
START- & END_DATE总是每季度一次。我需要一个输出如下的SQL查询。
| 季度_小时 *| 价值|
| - -----|- -----|
| 2019 - 07 - 22 10:45:00|不适用|
| 2019 - 07 - 22 11:00:00|不适用|
| 2019 - 07 - 22 11:15:00|不适用|
| 2019 - 07 - 22 11:30:00|不适用|
| 2019 - 07 - 22 11:45:00|不适用|
- 一刻钟的结束时间
我试过这个,但不幸的是,这不会工作:
WITH interval_data AS (
SELECT
START_DATE + ((LEVEL - 1) / 96) AS quarter_hour,
VALUE
FROM
table
CONNECT BY
LEVEL <= ((END_DATE - START_DATE) *96) + 1
)
SELECT
TO_CHAR(quarter_hour, 'DD.MM.YYYY HH24:MI') AS quarter_hour,
VALUE
FROM
interval_data
ORDER BY
quarter_hour;
有人知道我哪里做错了吗?
3条答案
按热度按时间sycxhyv71#
您可以使用递归子查询来实现:
dgiusagp2#
所以,我运行了下面的代码,看起来不错:
)
;
tmb3ates3#
非常感谢您的回复。我真的很困惑。当我把my_table放在另一个WITH子查询子句中时,它可以工作。
在这里我立即得到一个结果。
但是当我只使用一个或没有WITH子句时,那么在30分钟内没有任何事情发生: