Una consulta simple que debería estar funcionando no lo está.
Tengo una consulta simple:
declarar @manual varchar(80) = ‘Discount’,’Misc Charges’
seleccionar *
desde #Final
donde charge_type en (@manual)
Ahora he verificado que mi variable declarada está configurada correctamente utilizando el comando PRINT de la siguiente manera: PRINT ‘Discount’,’Misc Charges’ y de hecho devuelve como espero: ‘Discount’,’Misc Charges’.
Sin embargo, cuando ejecuto esta consulta, no obtengo resultados.
Si en cambio simplemente uso:
seleccionar *
desde #Final
donde charge_type en (‘Discount’,’Misc Charges’)
Entonces no hay problema, obtengo mis resultados. Estoy seguro de que me golpearé una vez que obtenga la respuesta, pero en este momento esto simplemente no tiene sentido. Sin errores, simplemente no me da mis columnas sin filas como si no hubiera datos. ¿Qué me falta?
davy.ai
El problema con la primera consulta es que el operador
IN
requiere una lista de valores separados por comas, no una sola cadena con múltiples valores separados por comas.Puede resolver esto utilizando SQL dinámico para construir una cadena con los valores separados por comas y luego incluirlo en la consulta. Aquí tienes un ejemplo:
Esto generará una consulta con la cadena
'Descuento','Cargos Varios'
como la lista de valores para el operadorIN
. Se utiliza el procedimiento almacenadosp_executesql
para ejecutar la declaración SQL dinámica.