ayuda con SQL

17/12/2003 - 15:28 por Lmaldona | Informe spam
Amigos,

Ayudenme con SQL, por favor

Tengo este SQL que estoy usando DECODE y la verdad es que
no funciona, alguien de la comunidad me pude ayudar, me
arroja el siguiente mensaje

ORA-0095 Falta expresion clave

El SQL es el siguiente :

PO_VENDORS.VENDOR_NAME NOMBRE ,
PO_VENDORS.SEGMENT1 RUT ,
FND_LOOKUP_VALUES_VL.MEANING RUBRO ,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2003' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2003,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2002' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2002
FROM
AP.AP_INVOICES_ALL AP_INVOICES_ALL,
PO.PO_VENDORS PO_VENDORS,
APPS.FND_LOOKUP_VALUES_VL FND_LOOKUP_VALUES_VL,
AP.AP_INVOICE_PAYMENTS_ALL AP_INVOICE_PAYMENTS_ALL,
PO.PO_VENDOR_SITES_ALL PO_VENDOR_SITES_ALL
WHERE
( AP_INVOICES_ALL.VENDOR_ID =
PO_VENDORS.VENDOR_ID ) AND
( PO_VENDORS.VENDOR_TYPE_LOOKUP_CODE =
FND_LOOKUP_VALUES_VL.LOOKUP_CODE ) AND
( AP_INVOICES_ALL.INVOICE_ID =
AP_INVOICE_PAYMENTS_ALL.INVOICE_ID ) AND
( AP_INVOICES_ALL.VENDOR_SITE_ID =
PO_VENDOR_SITES_ALL.VENDOR_SITE_ID ) AND
( FND_LOOKUP_VALUES_VL.LOOKUP_TYPE = 'VENDOR
TYPE' ) AND
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'FACTURA' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE = 'FACTURA
SALON' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'ANTICIPO' ) AND
( AP_INVOICE_PAYMENTS_ALL.AMOUNT > 0 )

AND
TO_CHAR(INVOICE_DATE) BETWEEN '01/01/02'
OR '31/12/03'

HAVING ( SUM(AP_INVOICES_ALL.INVOICE_AMOUNT) = SUM
(AP_INVOICES_ALL.INVOICE_AMOUNT ) )
GROUP BY
FND_LOOKUP_VALUES_VL.MEANING ,
PO_VENDORS.VENDOR_NAME ,
PO_VENDORS.SEGMENT1
ORDER BY
FND_LOOKUP_VALUES_VL.MEANING ASC,
PO_VENDORS.VENDOR_NAME ASC,
PO_VENDORS.SEGMENT1 ASC

Preguntas similare

Leer las respuestas

#1 Javier Loria
17/12/2003 - 18:24 | Informe spam
Hola:
DECODE es una construccion de ORACLE que no existe fuera de ORACLE, si
quieres usar SQL deberas usar el CASE. Revisa la documentacion en linea
(BOL) sobre la sintaxis tiene 2 formas:
SELECT CASE WHEN (Condicion1) THEN Valor1
WHEN (Condicion2) THEN Valor2
...
END

O su alternativa (mas parecida al DECODE)
SELECT CASE Columna WHEN ValorA THEN Valor1
WHEN ValorB THEN Valor2
...
END

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Lmaldona escribio:
Amigos,

Ayudenme con SQL, por favor

Tengo este SQL que estoy usando DECODE y la verdad es que
no funciona, alguien de la comunidad me pude ayudar, me
arroja el siguiente mensaje

ORA-0095 Falta expresion clave

El SQL es el siguiente :

PO_VENDORS.VENDOR_NAME NOMBRE ,
PO_VENDORS.SEGMENT1 RUT ,
FND_LOOKUP_VALUES_VL.MEANING RUBRO ,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2003' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2003,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2002' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2002
FROM
AP.AP_INVOICES_ALL AP_INVOICES_ALL,
PO.PO_VENDORS PO_VENDORS,
APPS.FND_LOOKUP_VALUES_VL FND_LOOKUP_VALUES_VL,
AP.AP_INVOICE_PAYMENTS_ALL AP_INVOICE_PAYMENTS_ALL,
PO.PO_VENDOR_SITES_ALL PO_VENDOR_SITES_ALL
WHERE
( AP_INVOICES_ALL.VENDOR_ID > PO_VENDORS.VENDOR_ID ) AND
( PO_VENDORS.VENDOR_TYPE_LOOKUP_CODE > FND_LOOKUP_VALUES_VL.LOOKUP_CODE ) AND
( AP_INVOICES_ALL.INVOICE_ID > AP_INVOICE_PAYMENTS_ALL.INVOICE_ID ) AND
( AP_INVOICES_ALL.VENDOR_SITE_ID > PO_VENDOR_SITES_ALL.VENDOR_SITE_ID ) AND
( FND_LOOKUP_VALUES_VL.LOOKUP_TYPE = 'VENDOR
TYPE' ) AND
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'FACTURA' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE = 'FACTURA
SALON' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'ANTICIPO' ) AND
( AP_INVOICE_PAYMENTS_ALL.AMOUNT > 0 )

AND
TO_CHAR(INVOICE_DATE) BETWEEN '01/01/02'
OR '31/12/03'

HAVING ( SUM(AP_INVOICES_ALL.INVOICE_AMOUNT) = SUM
(AP_INVOICES_ALL.INVOICE_AMOUNT ) )
GROUP BY
FND_LOOKUP_VALUES_VL.MEANING ,
PO_VENDORS.VENDOR_NAME ,
PO_VENDORS.SEGMENT1
ORDER BY
FND_LOOKUP_VALUES_VL.MEANING ASC,
PO_VENDORS.VENDOR_NAME ASC,
PO_VENDORS.SEGMENT1 ASC
Respuesta Responder a este mensaje
#2 Sérgio Monteiro
19/12/2003 - 07:55 | Informe spam
Bueno, a pesar de este ser un forum de SQL Server, no me parece que haya
problemas con su decode. Mas bien, revisa tu SQL buscando problemas en el
Where. Comienza por cambiar lo OR por IN (solo para mejorar la
compreension.). Y si usas Oracle 9i, trata de cambiar el DECODE por CASE,
para tener un codigo mas limpio y estar mas al par de los padrones.

Javier, solo una notita: INFORMIX tambiem contiene una clausula DECODE


saludos,

Sérgio Monteiro - Brasil
www.sqlpass.org
"Lmaldona" escreveu na mensagem
news:048101c3c4aa$0a9112f0$
Amigos,

Ayudenme con SQL, por favor

Tengo este SQL que estoy usando DECODE y la verdad es que
no funciona, alguien de la comunidad me pude ayudar, me
arroja el siguiente mensaje

ORA-0095 Falta expresion clave

El SQL es el siguiente :

PO_VENDORS.VENDOR_NAME NOMBRE ,
PO_VENDORS.SEGMENT1 RUT ,
FND_LOOKUP_VALUES_VL.MEANING RUBRO ,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2003' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2003,
DECODE(TO_CHAR(INVOICE_DATE,'YYYY'),'2002' ,
SUM(TO_NUMBER(AP_INVOICES_ALL.INVOICE_AMOUNT) ))
TOTAL_2002
FROM
AP.AP_INVOICES_ALL AP_INVOICES_ALL,
PO.PO_VENDORS PO_VENDORS,
APPS.FND_LOOKUP_VALUES_VL FND_LOOKUP_VALUES_VL,
AP.AP_INVOICE_PAYMENTS_ALL AP_INVOICE_PAYMENTS_ALL,
PO.PO_VENDOR_SITES_ALL PO_VENDOR_SITES_ALL
WHERE
( AP_INVOICES_ALL.VENDOR_ID > PO_VENDORS.VENDOR_ID ) AND
( PO_VENDORS.VENDOR_TYPE_LOOKUP_CODE > FND_LOOKUP_VALUES_VL.LOOKUP_CODE ) AND
( AP_INVOICES_ALL.INVOICE_ID > AP_INVOICE_PAYMENTS_ALL.INVOICE_ID ) AND
( AP_INVOICES_ALL.VENDOR_SITE_ID > PO_VENDOR_SITES_ALL.VENDOR_SITE_ID ) AND
( FND_LOOKUP_VALUES_VL.LOOKUP_TYPE = 'VENDOR
TYPE' ) AND
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'FACTURA' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE = 'FACTURA
SALON' ) OR
( PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
= 'ANTICIPO' ) AND
( AP_INVOICE_PAYMENTS_ALL.AMOUNT > 0 )

AND
TO_CHAR(INVOICE_DATE) BETWEEN '01/01/02'
OR '31/12/03'

HAVING ( SUM(AP_INVOICES_ALL.INVOICE_AMOUNT) = SUM
(AP_INVOICES_ALL.INVOICE_AMOUNT ) )
GROUP BY
FND_LOOKUP_VALUES_VL.MEANING ,
PO_VENDORS.VENDOR_NAME ,
PO_VENDORS.SEGMENT1
ORDER BY
FND_LOOKUP_VALUES_VL.MEANING ASC,
PO_VENDORS.VENDOR_NAME ASC,
PO_VENDORS.SEGMENT1 ASC



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida