2015-10-05 5 views
-1

Как связать запрос Oracle с датой? Я должен поставить переменную на 4 место. Мой запрос начинается с WITH AS, поэтому я не могу использовать решение Oracle SQL Loop through Date Range.Пробег в диапазоне дат

Я также не могу создать временную таблицу.

Вот моя попытка:

WITH d 
AS (
    SELECT DATE'2015-06-22' + LEVEL - 1 AS current_d 
     FROM dual 
    CONNECT BY DATE'2015-06-22' + LEVEL - 1 < DATE'2015-10-04' 
), 
OrderReserve 
AS (
    SELECT cvwarehouseid 
     ,lproductid 
     ,SUM(lqty) lqty 
    FROM ABBICS.iOrdPrdQtyDate 
    GROUP BY cvwarehouseid 
     ,lproductid 
    ) 
    SELECT 
    ... 
    WHERE IORDREFILL.DNCONFIRMEDDELDATE < CAST(TO_CHAR(d.current_d , 'YYYYMMDD') AS NUMBER(38)) 
    ... 
+0

Проверьте это: http://stackoverflow.com/questions/987610/how-to-iterate -over-a-date-range-in-pl-sql –

+0

Поместите здесь несколько примеров. – San

+0

В приведенном выше запросе Oracle не распознает d.current_d – Kulis

ответ

1

Если я вас правильно понял, вы предполагаете, что вы можете использовать только 1 инлайн таблицу в запросе. Это не так, вы можете использовать несколько таблиц инлайн и расширить существующий WITH пункт с другой цикл по датам:

with OrderReserve as (
    SELECT cvwarehouseid 
     ,lproductid 
     ,SUM(lqty) lqty 
    FROM ABBICS.iOrdPrdQtyDate 
    GROUP BY cvwarehouseid 
     ,lproductid  
), date_range as (
    select sysdate+level 
    from dual 
    connect by level <= 30 
) 
select * 
from OrderReserve, date_range 
... -- expand with date_range as you see fit 
; 
Смежные вопросы