snapshots scripts script interpretacion informes ejemplos create awr 12c 11g sql oracle oracle11g

scripts - Problema de Oracle con SQL de informes



scripts oracle ejemplos (1)

Tienes dos filas en Y para los mismos pares de client_num location_code y de client_num que te estás uniendo. Entonces, la unión duplica los resultados y, por lo tanto, duplica los totales.

Supongo que tendrá que coincidir en uno de los valores de las fechas de alguna manera.

EDITAR: Para abordar su pregunta en comentarios, puede intentar cambiar FROM Y a lo siguiente:

FROM (SELECT DISTINCT CLIENT_NUM, LOCATION_CODE FROM Y) as Y

Tengo un informe SQL en Oracle que está usando la función SUM .

Tabla Y

CLIENT_NUM LOCATION_CODE EFFECTIVE_DATE EXPIRY_DATE 1234 AB01 1/1/2011 6/30/2014 1234 AB01 7/1/2014 8/31/2014 1234 AB01 9/1/2014 6/30/2015 1234 AB66 1/1/2011 6/30/2014 1234 AB66 7/1/2014 8/31/2014 1234 AB66 9/1/2014 6/30/2015

Tabla X

CLIENT_NUM LOCATION_CODE EMPLOYEE_COUNT TOTAL_HOURS_WORKED REPORTING_YEAR 1234 AB01 600 12000 2014 1234 AB66 50 11000 2014

SQL:

SELECT SUM(x.EMPLOYEE_COUNT) OVER (PARTITION BY CASE '':input_parm:'' WHEN ''LOCATION'' THEN y.LOCATION_CODE || '' '' || y.LOCATION_NAME WHEN ''CLIENT'' THEN y.CLIENT_NUM|| '' '' ||z.CLIENT_NAME END ) AS EMPLOYEE_COUNT , SUM(x.TOTAL_HOURS_WORKED) OVER (PARTITION BY CASE '':input_parm:'' WHEN ''LOCATION'' THEN y.LOCATION_CODE || '' '' || y.LOCATION_NAME WHEN ''CLIENT'' THEN y.CLIENT_NUM|| '' '' ||z.CLIENT_NAME END ) AS TOTAL_HOURS_WORKED FROM Y LEFT OUTER JOIN X ON Y.CLIENT_NUM = X.CLIENT_NUM AND Y.LOCATION_CODE = X.LOCATION_CODE AND X.REPORTING_YEAR = ''2014'' AND location.EFFECTIVE_DATE BETWEEN TO_DATE(''01-JAN-:in_reporting_year:'',''DD-MON-YYYY'') AND TO_DATE(''31-DEC-:in_reporting_year:'',''DD-MON-YYYY'') WHERE Y.CLIENT_NUM=''1234'' AND (Y.LOCATION_CODE=''AB66'' OR Y.LOCATION_CODE=''AB01'')

Esto es duplicar los números y devolver lo siguiente al pasar " CLIENT " o " LOCATION " para :input_parm: y 2014 para :in_reporting_year:

EMPLOYEE_COUNT TOTAL_HOURS_WORKED 1300 46000 1300 46000

Este es el resultado esperado:

EMPLOYEE_COUNT TOTAL_HOURS_WORKED 650 23000 650 23000

¿Cómo puedo filtrar aún más la unión para que coincida con una sola?