Tengo un problema con un query, en realidad es algo que no entiendo porque ocurre.
Tengo este query que me muestra, el numero de documento (que puede ser el numero de folio “[FolioNum]”, si es que tiene, o el numero de orden de compra “[NumAtCard]” si es que no tiene numero de folio ) la ciudad a donde despacho, si se despacha a oficina o domicilio, el servicio de transporte utilizado, pero por alguna razon a pensar de tener el campo de “[FolioNum]” vacio no me rellena el campo con el numero de OC.
les adjunto código y resultado del query:
SELECT CASE WHEN T0.[FolioNum] = ' ' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE', T0.[NumAtCard]
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE datediff(day,getdate(),t0.docduedate)=0 AND T1.[TrnspName] IN ('Por pagar', 'Pagado', 'Cargo Cta. Corriente Cliente')
SELECT CASE WHEN T0.[FolioNum] = 'ISNULL' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE'
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE datediff(day,getdate(),t0.docduedate)=0 AND T1.[TrnspName] IN ('Por pagar', 'Pagado', 'Cargo Cta. Corriente Cliente')
y me arroja este error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the varchar value ‘ISNULL’ to data type int. ‘’ (SWEI)
es correcto esto es lo que esta mal T1.[TrnspName] IN ('Por pagar', 'Pagado', 'Cargo Cta. Corriente Cliente') esos datos no están en la tabla que pones borra esa parte desde el in y te va a correr.
Creo que no es nada de eso, ya que esa sentencia esta en el where y el error en en select, igual para verificar modifique la linea que me comentas y sigue con el mismo error
SELECT CASE WHEN T0.[FolioNum] = ' ' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE'
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE datediff(day,getdate(),t0.docduedate)=0 AND T0.[U_AI_TransNac] != ' '
SELECT CASE WHEN ISNULL(T0.[FolioNum],' ')= ' ' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE'
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE datediff(day,getdate(),t0.docduedate)=0 AND T0.[U_AI_TransNac] != ' '
y me arroja este error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the nvarchar value ‘BOLETA 2293’ to data type int. ‘’ (SWEI)
SELECT CASE WHEN T0.[FolioNum] = ' ' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE', T0.[NumAtCard], T0.[FolioNum]
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE datediff(day,getdate(),t0.docduedate)=0 AND T1.[TrnspName] IN ('Por pagar', 'Pagado', 'Cargo Cta. Corriente Cliente')
Los 2 últimos campos son los que te están faltando verdad??? La cosa es que lo estás validando contra ’ ’ (es decir un espacio), pero que ocurre cuando T0.[FolioNum] = ‘’ (sin espacio)? ese seguramente es el caso que te está dando problemas. Lo vas a notar con el query que te estoy dando. donde al final podrás ver el valor del T0.[FolioNum] y del T0.[NumAtCard] y entender porqué esa línea te viene en vacío.
No es lo mismo NULL que vacio, el vacio al menos contiene el fin de cadena. En tu ejemplo tu lo que pones es un espacio entre las dos comillas simples, y para esto van pegadas, lo que yo usatia en la condición seria algo asi
WHEN COALESCE(T0.FolioNum,'') = '' THEN
Con eso, si es NULL te devuelve vacío y si no cualquier otra cosa que contenga incluido el vacío
hola, aun no he podido dar con el error, intente todo lo que me han propuesto y sigue igual.
lo ultimo que hice fue lo que tu me recomendaste dejando el codigo asi:
SELECT CASE WHEN COALESCE(T0.FolioNum,' ') = ' ' THEN T0.[NumAtCard] ELSE T0.[FolioNum] END AS 'DOCUMENTO', T0.[CardName], T0.[U_AI_Ciudad], CASE T0.[U_AI_Despacho] WHEN 01 THEN 'Oficina' WHEN 02 THEN 'Domicilio' END 'Despachar a', T0.[U_AI_TransNac] AS 'TRASNPORTE'
FROM ODLN T0 INNER JOIN OSHP T1 ON T0.[TrnspCode] = T1.[TrnspCode]
WHERE T0.[DocDate] >=[%0] AND T0.[U_AI_TransNac] != ' '
y me sigue arrojando este error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the nvarchar value ‘BOLETA 2293’ to data type int. ‘’ (SWEI)
no se si esta bien copiado pero me sigue arrojando este error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the nvarchar value ‘BOLETA 2293’ to data type int. ‘Valores definidos por usuario’ (CSHS)
No leí bien el mensaje de error, lo que te dice que estas tratando de cambiar un varchar a int, y en tu consulta solo puede ocurrir en esta parte, al comparar con un entero trata de convertirlo a entero, y ese UDF debe ser varchar…
Hola Saida, gracias por ayudar, intente lo que dices pero sigue arrojando el mismo error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the nvarchar value ‘BOLETA 2296’ to data type int. ‘’ (WLS1)