Mi consulta es

select  
    '1' as KPI_ID, 'P2P' as KPI_DESC,'22-MAR-17' as dates,
    (sum(case when S_DATE between add_months('22-MAR-17',0)-13
                          and add_months('22-MAR-17',0)-7  then VOLUME else 0 end )) LAST_WEEK_Volume,
    (sum(case when S_DATE between add_months('22-MAR-17',0)-6
                          and add_months('22-MAR-17',0)  then VOLUME else 0 end )) THIS_WEEK_Volume
from 
    table

Declaración del problema: en realidad tengo datos de dos años ... quiero calcular el volumen de la semana pasada, el volumen de la semana actual por día durante 2 años.Entonces, ¿qué debo modificar en la consulta? cálculo sabio. de acuerdo con google, encontré que después de definir el parámetro start_date y end_date y pasar a la columna puede ser posible, ¿podrías ayudarme?

0
siddhesh 14 feb. 2018 a las 08:27

2 respuestas

La mejor respuesta

Podría utilizar sustitución

        define my_date = '''22-MAR-17''';
         select  
           '1' as KPI_ID, 'P2P' as KPI_DESC, TO_DATE(&my_date,'DD-MON-YY')  as dates,
            (sum(case when S_DATE between add_months(TO_DATE(&my_date,'DD-MON-YY'),0)-13
            and add_months(TO_DATE(&my_date,'DD-MON-YY'),0)-7  then VOLUME else 0 end )) LAST_WEEK_Volume,
            (sum(case when S_DATE between add_months(TO_DATE(&my_date,'DD-MON-YY') ,0)-6
            and add_months(TO_DATE(&my_date,'DD-MON-YY') ,0)  then VOLUME else 0 end )) THIS_WEEK_Volume
            from 
            table;
         undefine my_date;
1
Plirkee 14 feb. 2018 a las 07:30

RTFM?

La función incorporada de Oracle TO_DATE es lo que necesita.

Consulte la documentación de Oracle.

select TO_DATE(`14-FEB-2018`,`DD-MON-YYYY`) from DUAL

Actualizar

En respuesta a tu comentario ...

De hecho soy nuevo en pl-sql

Sugiero (nuevamente) RTFM.

Vaya a la página web Documentation de Oracle Database y seleccione la versión apropiada de la base de datos de Oracle.

Con respecto a PL / SQL, sugiero PL / SQL Referencia de idioma

2
Abra 14 feb. 2018 a las 09:30