on 04-08-2015 8:18 PM
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.