Consulta trazabilidad pedidos

Buen día Ingenieros

tengo una consulta que es para saber los estado en que se encuentran los pedidos desde que se hace la oferta hasta la factura y su entrega al cliente

pero no he podido con una parte de la consulta que es en donde se define el estado los estados son:
‘1.Por Aprobar’
‘2.Aprobado’
‘3.Ingresado’
‘4.Alistado’
‘5.Empacado’
‘6.En Cargue’

estos estado yo los defino en la consulta con un (SELECT CASE WHEN ,THEN)
Todo sale bien hasta el estado 3 , pero cuando vamos para el estado 4 este no sale … entonces no se que me falta para poder poner los demás estados
yo creería que es por los tipos de datos por que hasta el estado 3 los datos son de tipo fecha … y de hay en adelante ya son datos tipo alfanumérico creo que es eso

ojala me puedan ayudar con esta consulta… hay dejo el código para que lo puedan revisar

SELECT distinct
t0.cardname as 'Cliente',
CASE 
          WHEN T0.DocDate >0  and  t2.DocDate IS NULL  and t4.DocDate IS NULL  THEN '1.Por Aprobar'

          WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate IS NULL  THEN '2.Aprobado'

          --WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate >0  THEN '3.Ingresado'

          WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate >0 and  t4.U_ciudad_Fact  between 1 and 20 THEN '4.Alistado'


     

         -- WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate >0 and t4.U_ciudad_Fact >0 and t4.U_Empacado >0 THEN '5.Empacado'

          --WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate >0 and t4.U_ciudad_Fact >0 and t4.U_Empacado >0  t4.U_MedioDespacho >0 THEN '6.En Cargue'


ELSE 'Sin Definirrrrr' END AS 'Estado General',


T0.DocDate as 'Fecha Oferta', 
--t0.U_Pendiente_Por as 'Oferta Pendiente Por',
t2.DocDate as 'Fecha Orden',
T2.DocNum as 'No.Orden', 
CASE WHEN t4.DocDate >0  THEN '' ELSE t2.U_Observa END AS 'Pendiente por Alistamiento',

t4.DocDate as 'Fecha Factura',
T4.DocNum as 'No.Factura', 
t4.U_Fecha_Despacho as 'Fecha Despacho', 
t4.U_Num_Guia as 'No. guia',
t6.Name as 'Transportadora'

FROM 
	OQUT as T0 LEFT JOIN 
	RDR1 as T1 ON T0.DocEntry = T1.BaseEntry left JOIN 
	ORDR as T2 ON T1.DocEntry = T2.DocEntry left JOIN 
	INV1 as T3 ON T3.BaseEntry=T2.DocEntry AND T3.BaseType='17' left JOIN 
	OINV as T4 ON T4.DocEntry=T3.DocEntry left JOIN 
	OSLP as T5 ON T5.SlpCode=T0.SlpCode left JOIN 
	[dbo].[@TRANSPORTADORAS] as T6 ON T4.[U_TRANSPORT] = T6.[Code]
	where T0.Docdate >= '08/05/2020' and T0.CANCELED = 'N'  AND T2.[CANCELED]= 'N'  order by T0.DocDate desc

cuando haces un Case para distintos valores TODOS deben ser el mismo tipo de datos.
No puedes hacer una consulta de tipo Case y que si es un resultado te de una fecha, y con otro resultado te de un texto o un número por ejemplo. Recuerda que para la consulta aunque sean muchos “case” al final es 1 solo campo y debe de estar definido de 1 solo tipo.

Ahora bine. por lo que veo el resultado de todas es un texto.
En el 4 intenta cambiar el Between por 2 consultas separadas, una > Fecha and < Fecha

buen día

Gracias por la informacion

pero no entiendo bien esto que dices: (En el 4 intenta cambiar el Between por 2 consultas separadas, una > Fecha and < Fecha)??

cambialo…

WHEN T0.DocDate >0 and t2.DocDate >0 and t4.DocDate >0 and t4.U_ciudad_Fact >= 1 and t4.U_ciudad_Fact <= 20 THEN '4.Alistado'

buen dia

si ya la puse pero sigue igual…

ose me ocurre si se hacen 2 campos … que opina ?? lo hice pero ahora el segundo campo no me coje y eso que el tipo de datos es igual

SELECT distinct
t0.cardname as 'Cliente',
CASE 
WHEN T0.DocDate >0  and  t2.DocDate IS NULL  and t4.DocDate IS NULL THEN '1.Por Aprobar'

WHEN T0.DocDate >0  and  t2.DocDate >0  and t4.DocDate IS NULL   THEN '2.Aprobado'

WHEN T0.DocDate >0  and  T2.DocDate >0  and T4.DocDate >0 THEN '3.Ingresado'

ELSE 'Error en Trazabilidad' END AS 'Estado(1,2,3)',

CASE

WHEN T4.U_ciudad_Fact >0 AND t4.U_Empacado IS NULL  and t4.U_MedioDespacho IS NULL THEN '4.Alistado'

WHEN T4.U_ciudad_Fact >0 and t4.U_Empacado >0  and t4.U_MedioDespacho IS NULL THEN '5.Empacado'

WHEN T4.U_ciudad_Fact >0 and t4.U_Empacado >0  and t4.U_MedioDespacho <>'' THEN '6.En Cargue'

ELSE '' END AS 'Despacho',


T0.DocDate as 'Fecha Oferta', 
--t0.U_Pendiente_Por as 'Oferta Pendiente Por',
t2.DocDate as 'Fecha Orden',
--T2.DocNum as 'No.Orden', 
--CASE WHEN t4.DocDate >0  THEN '' ELSE t2.U_Observa END AS 'Pendiente por Alistamiento',

t4.DocDate as 'Fecha Factura',
t4.U_ciudad_Fact AS 'Alistado por',
t4.U_Empacado as 'Empacado por',
T4.U_MedioDespacho as 'MedioDespacho',
T4.DocNum as 'No.Factura', 
--t4.U_Fecha_Despacho as 'Fecha Despacho', 
--t4.U_Num_Guia as 'No. guia',
t6.Name as 'Transportadora'

FROM 
	OQUT as T0 LEFT JOIN 
	RDR1 as T1 ON T0.DocEntry = T1.BaseEntry left JOIN 
	ORDR as T2 ON T1.DocEntry = T2.DocEntry left JOIN 
	INV1 as T3 ON T3.BaseEntry=T2.DocEntry AND T3.BaseType='17' left JOIN 
	OINV as T4 ON T4.DocEntry=T3.DocEntry left JOIN 
	OSLP as T5 ON T5.SlpCode=T0.SlpCode left JOIN 
	[dbo].[@TRANSPORTADORAS] as T6 ON T4.[U_TRANSPORT] = T6.[Code]
	where T0.Docdate >= '8/05/2020' and T0.CANCELED = 'N'  AND T2.[CANCELED]= 'N'  order by T0.DocDate desc

Una pregunta base…

Dices que es una consulta…

  1. Cual es el error que te arroja?
    y
  2. Lo has corrido en SQL?

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.