Me podrías mostrar una imagen de lo que hiciste por favor. ¡Gracias!
Los campos definidos por el usuario no los utilicé ya que no son parámetros en mi BD.
Revisa mi ejemplo y me cuentas.
Te adjunto @Juanag
SELECT T0.“CardCode”, T0.“CardName”, T0.“DocNum”,T0.“DocDate”, T0.“DocTime”
FROM ORDR T0 all SELECT T1.“CardCode”, T1.“CardName”, T1.“DocNum”, T1.“DocDate”, T1.“U_LD_Respons1”, T1.“U_LD_Clase1”, T1.“DocTime”
FROM ODLN T1 all SELECT T2.“CardCode”, T2.“CardName”, T2.“DocNum”, T2.“DocDate”, T2.“DocTime”, T2.“U_LD_Hora1”
FROM OINV T2
No se si así esta bien o hay error en la sintaxis.
Tengo entendido que es lo mismo… De igual forma prueba y si no te funciona tendrías que googlear como se aplica esa condición en HANA.
Me cuentas por favor como te va.
Hola. Tengo entendido que para usar el UNION ALL es necesario que sea exactamente igual la consulta, prueba colocando los mismos valores en las 3 consultas.
Hola @Mike1 pero si son tablas diferentes como procedo por ejemplo tengo la ORDR OINV ODLN son tres diferentes habrá problema??
Casi todas las tablas de los documentos de marketing tienen los mismos campos incluso si creas un campo definido por el usuario este se coloca en todos los documentos. En caso que no contenga ningún valor el campo en el documento donde realizas la consulta te mostrará en NULL.
Lo ejecute así
SELECT T0.“CardCode”, T0.“CardName”, T0.“DocNum”,T0.“DocDate”, T0.“DocTime”
FROM ORDR T0 union all SELECT T1.“CardCode”, T1.“CardName”, T1.“DocNum”, T1.“DocDate”, T1.“U_LD_Respons1”, T1.“U_LD_Clase1”, T1.“DocTime”
FROM ODLN T1 union all SELECT T2.“CardCode”, T2.“CardName”, T2.“DocNum”, T2.“DocDate”, T2.“DocTime”, T0.“U_LD_Hora1”
FROM OINV T2
Y no me muestra nada.
@LuiskSiles efectivamente, ese es el problema por el cual no muestra nada tienes que tener la misma cantidad de campos con lo que ha dicho Miguel se resolverá tu problema.
Prueba algo asi:
SELECT T0."CardCode", T0."CardName", T0."DocNum",T0."DocDate", T0."DocTime" , T0."U_LD_Respons1", T0."U_LD_Clase1", T0."U_LD_Hora1"
FROM ORDR T0
UNION ALL
SELECT T0."CardCode", T0."CardName", T0."DocNum", T0."DocDate", T0."U_LD_Respons1", T0."U_LD_Clase1", T0."DocTime", T0."U_LD_Hora1"
FROM ODLN T0
UNION ALL
SELECT T0."CardCode", T0."CardName", T0."DocNum", T0."DocDate", T0."DocTime", T0."U_LD_Hora1" , T0."U_LD_Respons1", T0."U_LD_Clase1"
FROM OINV T0
Si yo ejecuto la consulta sin los campos definidos por el usuario me muestra la información. Aunque para serte sincero no me gusta como se presenta la información.
Hola @LuiskSiles, la forma en que lo estas realizando es buena, te muestro la forma en la que yo la realizaría, a mi punto de vista es mas cómoda. Te adjunto el script colocale los campo que necesites y nos cuentas como te fue.
Select 'Orden de Venta'[Tipo Documento], T0.DocNum, T0.CardName, T1.ItemCode, T1.Dscription,
'Entrega de Venta'[Tipo Doumento Destino], T3.DocNum, T3.CardName, T2.ItemCode, T2.Dscription,
'Facturas de venta'[Tipo Doumento Destino], T5.DocNum, T5.CardName, T4.ItemCode, T4.Dscription
From ORDR T0 Inner join -- Encabezado de Orden de venta
RDR1 T1 on T0.DocEntry = T1.DocEntry Inner Join --Detalle de Orden de venta
DLN1 T2 on T1.DocEntry = T2.BaseEntry and T1.LineNum = T2.BaseLine inner join --Detalle Entrega de venta
ODLN T3 on T2.DocEntry = T3.DocEntry inner join -- Encabezado Entrega de venta
INV1 T4 on T2.DocEntry = T4.BaseEntry and T2.LineNum = T4.BaseLine and T2.ItemCode = T4.ItemCode inner join --Detalle de la Factura de venta
OINV T5 on T4.DocEntry = T5.DocEntry
Where T0.DocNum = '86544' -- Este filtro lo puedes cambiar por fechas o el campo que necesites filtrar
Saludos Cordiales
hola @LuiskSiles, en el Where quita T0.DocNum = ‘86544’ y coloca T0.DocDate >=‘20190101’ ,
y cuentanos como te va.
No te muestra nada porque esta haciendo un filtro por numero de documento, que yo coloque y el numero 86544 no existe en tu base de datos en las OV pero colocale que te indico y vuelve a probar.
Saludos.
Sin duda es la mejor opción.
Buenas estimados como seguimiento les comento lo siguiente:
El query que se me genero es el siguiente:
SELECT T0.“CardCode”, T0.“CardName”, T0.“DocNum”,T0.“DocDate”, T0.“DocTime”, T0.“U_LD_Respons1”, T0.“U_LD_Clase1”, T0.“U_LD_Hora1”
FROM ORDR T0
UNION ALL
SELECT T0.“CardCode”, T0.“CardName”, T0.“DocNum”,T0.“DocDate”, T0.“DocTime”, T0.“U_LD_Respons1”, T0.“U_LD_Clase1”, T0.“U_LD_Hora1”
FROM ODLN T0
UNION ALL
SELECT T0.“CardCode”, T0.“CardName”, T0.“DocNum”,T0.“DocDate”, T0.“DocTime”, T0.“U_LD_Respons1”, T0.“U_LD_Clase1”, T0.“U_LD_Hora1”
FROM OINV T0
pero hay un dilema la columna donde me muestra la hora me esta mostrando todo en linea y no separado por la columna por ejemplo me esta mostrando en la misma columna la hora de creación de orden de venta la hora de alisto y la hora de la creacion de la factura existira forma de separarlo???
Hola @LuiskSiles, lamento informarte que lo que solicitas no es posible, como utilizas un script con union no es posible hacerlo, por tal motivo yo te mostré un script que realiza lo que solicitas, pero al parecer no lleno tus requerimientos.
Saludos
Justo a esto me refería cuando comente que no me gustaba como se presenta la información.
Query seguimiento de Orden hasta la factura - nº 15 por Mike1
Deberías probar de nuevo con el script de @CJPG, la cuestión es esto es hacer correctamente los JOIN entre las tablas para que no te valla a mostrar información descabellada. Haz la prueba y nos comentas como te sale.
Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.