Hola a todos.
Este es el código:
Declare @OrderBy nvarchar(50)
Set @OrderBy = 'Cust_Country'
Select
Cust_id, Cust_Serv_Rep, Cust_Type, Cust_Country,
Cust_Name
FROM Customer
ORDER BY
CASE
WHEN @OrderBy = 'Cust_id' THEN Cust_id
WHEN @OrderBy = 'Cust_Serv_Rep' THEN Cust_Serv_Rep
WHEN @OrderBy = 'Cust_Type' THEN Cust_Type
WHEN @OrderBy = 'Cust_country' THEN Cust_Country
WHEN @OrderBy = 'Cust_Name' THEN Cust_Name
END
Este es el mensaje de error que tengo al querer hacer un order by
ustilizando una variable @OrderBy
Msg 245, Level 16, State 1, Line 5
Syntax error converting the nvarchar value 'Germany' to a column of data
type int.
He revisado las columnas muchas veces y los tipos de datos están correctos
el
Cust_id - INT,
Cust_Serv_Rep - nvarchar(50),
Cust_Type - nchar(20),
Cust_Country - nvarchar(50),
Cust_Name - nvarchar(250)
Cuando hago el Order by Cust_Country no tengo ningún problema los campos son
ordenados.
Cuando uso el CASE y ordeno una columna de tipo entero como el Cust_ID no
tengo problema, el problema es cuando quiero ordenar un tipo nvarchar o
char.
Si alguien puede darme una mano le agradeceré mucho, de lo contrario lo que
ando buscando es una forma de ordenar cuando el SQL recive una variable la
cual será el campo de orden.
1000 gracias!
Leer las respuestas