on 08-29-2013 9:44 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
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?
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
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.
User | Count |
---|---|
86 | |
7 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.