Buenos días colegas,
Favor quien pueda orientarme como unir estas 3 consultas, en una sola.
La idea es mostrar 4 columnas: Nombre, no vencido, vencido, total (vencido y no vencido). Y ordenarlo por la columna total.
Saludos.
Buenos días colegas,
Favor quien pueda orientarme como unir estas 3 consultas, en una sola.
La idea es mostrar 4 columnas: Nombre, no vencido, vencido, total (vencido y no vencido). Y ordenarlo por la columna total.
Saludos.
Has utilizado sub consultas ?? Documéntate un poco sobre ello, creo que será de ayuda para solucionar tu necesidad.
Saludos.
camparte los 3 scrips por favor, para ver como ayudarte.
Hola
Haz probado con un simple “Union All”
Pudiera ser suficiente con esto.
Saludos.
Hola @Gera_Mendez he probado con Union All, pero me muestra error de syntaxis. Por ejemplo al unir:
SELECT TOP 15 T0.“CardName” AS “Clientes”
, SUM (T0.“DocTotal” ) AS “Vencido”
FROM OINV T0
WHERE T0.“PaidSys” = 0 AND T0.“DocDueDate” < CURRENT_DATE
GROUP BY T0.“CardName”
ORDER BY SUM (T0.“DocTotal” ) DESC
UNION ALL
SELECT TOP 15 T0.“CardName” AS “Clientes”
, SUM (T0.“DocTotal” ) AS “No Vencido” FROM OINV T0
WHERE T0.“PaidSys” = 0 AND T0.“DocDueDate” > CURRENT_DATE
GROUP BY T0.“CardName” ORDER BY SUM (T0.“DocTotal” ) DESC
me muestra el siguiente error,
1). [SAP AG][LIBODBCHDB32 DLL][HDBODBC32] Syntax error or access violation;257 sql syntax error: incorrect syntax near “UNION”: line 16 col 1 ‘’ (SWEI) (at pos 220)
Ahora por ejemplo les saque la clausula order by, y uní las tres queries con el union all
SELECT TOP 15 T0.“CardName” AS “Clientes”
, SUM (T0.“DocTotal” ) AS "Vencido"FROM OINV T0
WHERE T0.“PaidSys” = 0 AND T0.“DocDueDate” < CURRENT_DATE
GROUP BY T0.“CardName”
Union all
SELECT TOP 15 T0.“CardName” AS “Clientes”
, SUM (T0.“DocTotal” ) AS “No Vencido” FROM OINV T0
WHERE T0.“PaidSys” = 0 AND T0.“DocDueDate” > CURRENT_DATE
GROUP BY T0.“CardName”
Union all
SELECT TOP 15 T0.“CardName"AS"Cliente”, SUM(T0.“DocTotal” )
AS “TOTAL” FROM OINV T0 WHERE T0.“PaidSys” = 0
GROUP BY T0.“CardName”
Me muestra el resultado correcto. Pero en orden inadecuado. Pues me aparecen solo dos columnas (CardName y SumDocTotal) y 45 filas(3 veces los 15 clientes). Es decir me muestra la información pero vertical. y la necesito horizontal.
@FranciscoAn, ¿necesitas que al final se muestren solamente 15 clientes? y si es así, ¿cuál será el parámetro que defina qué 15 clientes quieres? Porque en el query de tu pregunta muestras primero los 15 clientes con mayor saldo sin vencer, luego los 15 con mayor saldo vencido, y luego los 15 con mayor saldo total, creo que deberías definir un solo parámetro.
Una vez definiendo eso, es más sencillo armar el query.
Hola @JonathanAzael exactamente, necesito que se muestren solo 15 clientes. El parametro que define es el del total general. la suma de los vencidos con los no vencidos.
Ese es el tema.
Agradezco tu aporte
Si, me parece que podría ser una buena solución. Estoy leyendo acerca del tema de las sub consultas, para generarlo de esta forma. Si tienen alguna fuente de información estaría muy agradecido.
Saludos.
Prueba con esto:
SELECT TOP (15)
T0.CardName,
(SELECT SUM (T1.DocTotal) FROM OINV T1 WHERE T1.CardName = T0.CardName AND T1.PaidSys = 0 AND T1.DocDueDate >= GETDATE() AND T1.CANCELED = ‘N’) AS [No Vencido],
(SELECT SUM (T1.DocTotal) FROM OINV T1 WHERE T1.CardName = T0.CardName AND T1.PaidSys = 0 AND T1.DocDueDate < GETDATE() AND T1.CANCELED = ‘N’) AS [Vencido],
(SELECT SUM (T1.DocTotal) FROM OINV T1 WHERE T1.CardName = T0.CardName AND T1.PaidSys = 0 AND T1.CANCELED = ‘N’) AS [Vencido]
FROM OINV AS T0 WHERE T0.PaidSys = 0
GROUP BY T0.CardName
ORDER BY SUM(T0.DocTotal) DESC
Modifiqué un poco las condiciones. Agregué una para cancelaciones (CANCELED = ‘N’).
@JonathanAzael GENIO excelente muchas gracias. Algunos detalles, pero impecable.
Supongo así es como se hacen las sub consultas.
Agradecido.
Saludos.
Exactamente, así son las subconsultas, solo debes tomar en cuenta varios factores, como que realmente apliques todos los filtros que requieras y que no dupliques información. En la empresa donde trabajo utilizo mucho este método, así como la sentencia de UNION o los JOIN.
Saludos
Genial, muchas gracias. Parece muy útil esta metodología. Voy a practicarla.
Saludos.
Amigo…leí tarde esta solicitud. Por si te sirve este esquema en donde se muestra la filosofía de los join muy gráficamente.
Quedo a tu disposición si necesitas ayuda en el futuro.
Saludos
Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.