cancel
Showing results for 
Search instead for 
Did you mean: 

ERROR AL UTILIZAR UNION ALL

0 Kudos

Compañeros necesito una vez mas de su ayuda . Estoy utilizando el siguiente query, pero cuando lo hago correr me sale el error "Sintaxis incorrecta cerca de la palabra UNION".

Alguien sabes porque pueda ser?? trate de disminuir el código pero aun así me sigue saliendo el error. ademas de utilizar solo la palabra union.

Espero alguien me pueda ayudar y necesita mas informacion, me pregunta nomas.

Un saludo.

SELECT

T0.[CardCode],

T0.[CardName],

T0.[DocNum],

T0.[DocDate],

T1.[ItemCode],

T1.[Dscription],

'Doc Destino 1' = CASE WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'Y' THEN 'Fact. Reserva Prov.'

                                  WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'N' THEN 'Fact. Prov.'

ELSE NULL END

FROM OPOR T0

INNER JOIN POR1 T1 ON T0.DOCENTRY = T1.DOCENTRY

LEFT OUTER JOIN PCH1 T2 ON T2.BASEENTRY = T1.DOCENTRY AND T2.BASETYPE = T1.OBJTYPE AND T2.BASELINE = T1.LINENUM

LEFT OUTER JOIN OPCH T3 ON T2.DOCENTRY = T3.DOCENTRY

LEFT OUTER JOIN PDN1 T4 ON T4.BASEENTRY = T1.DOCENTRY AND T4.BASETYPE = T1.OBJTYPE AND T4.BASELINE = T1.LINENUM

LEFT OUTER JOIN OPDN T5 ON T4.DOCENTRY = T5.DOCENTRY

WHERE T0.[CardCode] =[%0]

AND T0.CANCELED = 'N'

ORDER BY T0.CARDCODE ASC

UNION ALL

SELECT

T0.[CardCode],

T0.[CardName],

T0.[DocNum],

T0.[DocDate],

T1.[ItemCode],

T1.[Dscription],

'Doc Destino 1' = CASE WHEN T3.OBJTYPE = '20' THEN 'Entrada de Merc.'                              

ELSE NULL END

FROM OPOR T0

INNER JOIN POR1 T1 ON T0.DOCENTRY = T1.DOCENTRY

LEFT OUTER JOIN PDN1 T2 ON T2.BASEENTRY = T1.DOCENTRY AND T2.BASETYPE = T1.OBJTYPE AND T2.BASELINE = T1.LINENUM

LEFT OUTER JOIN OPDN T3 ON T3.DOCENTRY = T2.DOCENTRY

LEFT OUTER JOIN PCH1 T4 ON T4.BASEENTRY = T2.DOCENTRY AND T4.BASETYPE = T2.OBJTYPE AND T4.BASELINE = T2.LINENUM

LEFT OUTER JOIN OPCH T5 ON T5.DOCENTRY = T4.DOCENTRY

WHERE T0.[CardCode] =[%0]

AND T0.CANCELED = 'N'

ORDER BY T0.CARDCODE ASC

Accepted Solutions (1)

Accepted Solutions (1)

former_member203638
Active Contributor
0 Kudos

Hola Raul, suprime el primer --ORDER BY T0.CARDCODE ASC del primer select, de todos modos tu parametro de entrada es el cardcode.

Saludos.

Alessandro.

0 Kudos

Muchas gracias Alessandro por la ayuda, hice lo que me dijiste y me corrió el query, al utilizar el UNION ALL solo se tiene que utilizar uno solo order by o group by???

Otra pregunta, cuando hago correr el query me genera los resultados pero me genera doble, existe alguna solución para eso?? o es que es asi el uso de UNION ALL.

Muchas Gracias un saludo.

former_member203638
Active Contributor
0 Kudos

Con el Union no, mira esta pagina:

SQL SERVER – UNION ALL and ORDER BY – How to Order Table Separately While Using UNION ALL | Journ...

Para los datos duplicados intenta con union solamente en vez de union all.

Saludos.

Alessandro.

0 Kudos

Te cuento que hice la prueba utilizando solo el UNION pero aun así me genera doble resultado.

Ojala me puedan ayudar.

Un saludo

former_member203638
Active Contributor
0 Kudos

Puedes poner una captura de pantalla donde se muestre la duplicidad?

0 Kudos

Espero te sirva la imagen

former_member203638
Active Contributor
0 Kudos

Intenta asi:

SELECT distinct

T0.[CardCode],

T0.[CardName],

T0.[DocNum],

T0.[DocDate],

T1.[ItemCode],

T1.[Dscription],

'Doc Destino 1' = CASE

WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'Y' THEN 'Fact. Reserva Prov.'

WHEN T3.OBJTYPE = '18' AND T3.ISINS = 'N' THEN 'Fact. Prov.'

WHEN T5.ObjType='20' THEN 'Entrada de Merc.'

ELSE NULL END

FROM OPOR T0

INNER JOIN      POR1 T1 ON T0.DOCENTRY = T1.DOCENTRY

LEFT OUTER JOIN PCH1 T2 ON T2.BASEENTRY = T1.DOCENTRY AND T2.BASETYPE = T1.OBJTYPE AND T2.BASELINE = T1.LINENUM

LEFT OUTER JOIN OPCH T3 ON T2.DOCENTRY = T3.DOCENTRY

LEFT OUTER JOIN PDN1 T4 ON T4.BASEENTRY = T1.DOCENTRY AND T4.BASETYPE = T1.OBJTYPE AND T4.BASELINE = T1.LINENUM

LEFT OUTER JOIN OPDN T5 ON T4.DOCENTRY = T5.DOCENTRY

WHERE T0.[CardCode] =[%0]

AND T0.CANCELED = 'N'

Por que estas usando el union?

0 Kudos

Lo que pasa es que me pidieron que muestre los documentos, por lo menos los 2 siguientes, a partir de una Orden de Compra, entonces una opcion puede ser:

OPOR -> OPDN -> OPCH

la otra opcion puede ser:

OPOR -> OPCH -> OPDN

entonces estoy haciendo los joins con el primer caso y me dijeron que para el segundo caso podria utilizar un UNION pero en los joins relacionar las tablas OPOR -> OPCH -> OPDN.

Un saludo

former_member203638
Active Contributor
0 Kudos

Para el segundo caso creo que quisiste decir OPOR-OPCH-ORPC.

PD. Te funciono el query anterior?

0 Kudos

Lo que pasa es que en la empresa donde trabajo hay compras locales e importaciones, entonces cuando es una compra local se hace primero la orden de compra, luego la entrada de mercancias y luego la factura.

En el caso de las importaciones se hace 1ro la orden de compra, luego nos escanean la Factura y luego de unos dias se hace la entrada de mercancia porque las mercancias tardan en llegar del exterior, por eso es que para las compras locales se sigue el patron:

OPOR -> OPDN -> OPCH

y para el caso de las importaciones se utiliza el segundo caso:

OPOR -> OPCH -> OPDN

las notas de credito salen de una factura anulada, ese es otro caso que tiene que estar inmerso en los 2 casos anteriores mencionados.

Saludos.

Muchas Gracias por la ayuda!

PD: el query que me enviaste funciona muy bien y he estado haciendo algunas pruebas con el.

Answers (0)