on 06-27-2012 3:50 AM
Saludos, mi pregunta es la siguiente. Como puedo hacer la relación en un query para que me muestre todas las ofertas de ventas, ordenes de ventas, entregas y facturas de un cliente en especifico, tomando en cuenta que una entrega puede tener como documento base una oferta de venta o una orden de venta o que una factura tenga como documento destino una entrega o como documento base una orden de venta, es decir que me muestre un seguimiento de todos los documentos de ventas de un cliente para saber por los documentos que ha pasado y los que no ha pasado. he realizado un query con una relación FULL OUTER JOIN sobre cada una de las tablas ( OQUT, ORDR, ODLN, OINV ) sin embargo la información que muestra no siempre me muestra la relación como debería ya que me muestra valores que no son, les agradecería si me pudieran dar alguna sugerencia sobre como podría realizar este query
Buenos días Omar
Prueba con este código y has las modificaciones que necesites, a mi me funciona bien.
Saludos
select * from (
SELECT Distinct
T0.CardName [Cliente],
Case
When T0.DocNum Like '1_%%' Then ('A.Archila')
When T0.DocNum Like '2_%%' Then ('E.Alvarez')
When T0.DocNum Like '3_%%' Then ('M.Pérez')
When T0.DocNum Like '4_%%' Then ('V.Rosales')
When T0.DocNum Like '5_%%' Then ('S.Mazariégos')
When T0.DocNum Like '7_%%' Then ('A.Granados')
End [Comercializador],
T0.DocNum [Cotización],
T0.DocDate [Fecha1],
T0.DocTime [Inicio1],
Case
When T0.DocStatus = 'O' and T0.Canceled = 'N' Then ('Abierto')
When T0.DocStatus = 'C' and T0.Canceled = 'N' Then ('Cerrado')
When T0.DocStatus = 'C' and T0.Canceled = 'Y' Then ('Cancelado')
End [Estado1],
--ORDEN DE VENTA
T2.DocNum [Orden de venta],
T2.DocDate [Fecha2],
T2.DocTime [Inicio2],
case
When T2.U_StatusE = '00' Then ('Envío Programado')
When T2.U_StatusE = '01' Then ('Cargando Material')
When T2.U_StatusE = '02' Then ('Por Entregar')
When T2.U_StatusE = '03' Then ('Despachado')
When T2.U_StatusE = '04' Then ('Retraso')
End [OV Entrega],
CASE
WHEN T2.U_StatusD = '01' THEN ('Llegada Piloto')
WHEN T2.U_StatusD = '02' THEN ('En cola')
WHEN T2.U_StatusD = '03' THEN ('Proceso de carga')
WHEN T2.U_StatusD = '04' THEN ('Saliendo punto de carga')
WHEN T2.U_StatusD = '05' THEN ('En tránsito')
WHEN T2.U_StatusD = '06' THEN ('Llegada proyecto')
WHEN T2.U_StatusD = '07' THEN ('En proceso de descarga')
END [OV Despacho],
Case
When T2.DocStatus = 'O' and T2.Canceled = 'N' Then ('Abierto')
When T2.DocStatus = 'C' and T2.Canceled = 'N' Then ('Cerrado')
When T2.DocStatus = 'C' and T2.Canceled = 'Y' Then ('Cancelado')
End [Estado2],
--ENTREGA
T4.DocNum [Entrega],
T4.DocDate [Fecha3],
T4.Doctime [Inicio3],
Convert(Int,(T4.DocDate-T2.DocDate)) [Días],
--(T4.DocTime - T2.DocTime) [Tiempo],
Case
When T4.DocStatus = 'O' and T4.Canceled = 'N' Then ('Abierto')
When T4.DocStatus = 'C' and T4.Canceled = 'N' Then ('Cerrado')
When T4.DocStatus = 'C' and T4.Canceled = 'N' Then ('Cancelado')
End [Estado3],
--FACTURA
T6.DocNum [Factura],
T6.DocDate [Fecha4],
T6.DocTime [Inicio4],
Case
When T6.DocStatus = 'O' and T6.Canceled = 'N' Then ('Abierto')
When T6.DocStatus = 'C' and T6.Canceled = 'N' Then ('Cerrado')
When T6.DocStatus = 'C' and T6.Canceled = 'Y' Then ('Cancelado')
End [Estado4]
FROM dbo.OQUT T0
Left Join RDR1 T1 On T1.BaseRef = T0.DocNum
Left JOIN ORDR T2 ON T1.DocEntry = T2.DocEntry
Left Join DLN1 T3 ON T3.BaseRef = T2.DocNum
Left JOIN ODLN T4 ON T3.DocEntry = T4.DocEntry
left Join INV1 T5 On T5.BaseRef = T4.DocNum
Left Join OINV T6 On T5.DocEntry = T6.DocEntry
--Order by T0.DocDate DESc, T0.DocTime Desc
)A
Where not
(
A.estado1='Cerrado' and A.estado2='Cerrado' and A.estado3='Cerrado' and
A.estado4='Abierto'
)
and
not
(
A.estado1='Cerrado' and A.estado2='Cerrado' and A.estado3='Cerrado' and
A.estado4='Cerrado'
)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
94 | |
11 | |
10 | |
6 | |
5 | |
5 | |
4 | |
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.