cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda con query.

Former Member
0 Kudos

Estoy intentando hacer un query que me de el numero total de cotizaciones, numero total de facturas, numero total de clientes nuevos (en el mes en curso) todo esto por mes.

es decir una tabla tipo:

                                   ENERO                                                                 FEBRERO

Vendedor |  #Cotizaciones | #Facturas | #clientesNuevos | #Cotizaciones | #Facturas | #clientesNuevos |

Hice los querys uno por uno pero el como conjuntarlos es mi problema.

Query que me da las facturas:

SELECT DISTINCT T2.[SlpName],(T0.DocNum) as 'Facturas' FROM OINV T0  INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OSLP T2 ON T0.SlpCode = T2.SlpCode WHERE T1.[TargetType] <>'14' and  T0.[DocDate] >=[%0] AND  T0.[DocDate] <=[%1]

Despues un count.

Query que me da cotizaciones:

SELECT DISTINCT T2.[SlpName],(T0.DocNum) as 'Cotizaciones' FROM OQUT T0  INNER JOIN QUT1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OSLP T2 ON T0.SlpCode = T2.SlpCode WHERE T1.[TargetType] <>'14' and  T0.[DocDate] >=[%0] AND  T0.[DocDate] <=[%1]

Hay que hacer tambien un count, en estos dos al estar con inv1 me duplica los resultados si se hace el count en el query directo por lo cual tu que hacer un subquery para que me diera resultado.

Query que me da numero de clientes totales:

SELECT    T0.SlpName, COUNT(T1.CardCode) AS NumClientes

FROM         OSLP AS T0 INNER JOIN

                      OCRD AS T1 ON T0.SlpCode = T1.SlpCode

Clientes Nuevos (ultimos 6 meses) pero quiero dependiendo el rango de fechas a elegir.

SELECT     T0.slpName, Count(T1.CardName) AS Clientes

FROM         OSLP AS T0 INNER JOIN

                      OCRD AS T1 ON T0.SlpCode = T1.SlpCode

WHERE      (T1.CreateDate >= GETDATE() - 180)

Como conjuntar todos estos para que me de todo en un solo query.

Agradezco comentarios y sugerencias.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola Carlos haz probado realizar un UNION ALL para unir tus query te doy un ejemplo

SELECT DISTINCT '' as'Cotizaciones', T2.[SlpName],(T0.DocNum) as 'Facturas'

FROM OINV T0  INNER JOIN INV1 T1

UNION ALL

SELECT DISTINCT T2.[SlpName],(T0.DocNum) as 'Cotizaciones', ''as 'Facturas'

FROM OQUT T0

Como  podras ver en el ejemplo si un query lo primero es la columna de cotizaciones esta debe de ser la primera en todos los querys que va a unir y tiene que tener las mismas columnas todos los querys, con el simple hecho que coloques comillas simpres y le coloques el mismo nombre de las demas querys de coloca los datos.

Espero haber dado a entender

saludos cordiales

Former Member
0 Kudos

Lo intente con UNION ALL pero el detecta que el campo es el mismo y suma las cantidades en ambas columnas.

Former Member
0 Kudos

Hola Carlos podrias colocar como te quedo el query con los union, para revisar si hay algun error

Former Member
0 Kudos

Select SlpName as Vendedor, count(Facturas)  as Facturas, Count(Cotizaciones)

From(

SELECT DISTINCT T2.[SlpName],(T0.DocNum) as Facturas,'Cotizaciones'=0 FROM OINV T0  INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OSLP T2 ON T0.SlpCode = T2.SlpCode WHERE T1.[TargetType] <>'14' and  T0.[DocDate] >=[%0] AND  T0.[DocDate] <=[%1] ) x

UNION ALL

SELECT DISTINCT T2.[SlpName],'Facturas'=0, (T0.DocNum) as Cotizaciones FROM OQUT T0  INNER JOIN QUT1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OSLP T2 ON T0.SlpCode = T2.SlpCode WHERE T1.[TargetType] <>'14' and  T0.[DocDate] >=[%0] AND  T0.[DocDate] <=[%1] ) x

Group by Slpname