Tengo un requerimiento para ordenar un conjunto de resultados por una columna, basado en una entrada de Entero en un parámetro.Orden por y Diferentes tipos en un CASO
El problema es que necesito usar una CASE para el OrderBy, y parece que el código acepta el primer 'TYPE' en la columna de casos ... cualquier otro tipo falla.
Mi código es así:
WITH error_table AS
(
SELECT Row_Number() OVER
(ORDER BY
CASE @orderBy
WHEN 1 THEN received_date -- Last Rx'd message
WHEN 2 THEN message_id -- Message Id
WHEN 3 THEN zibmat.short_name -- Message action type
WHEN 4 THEN error_action.short_name -- Status type
WHEN 5 THEN ime.[allocated_date] -- Allocated Date
ELSE received_date
END) AS RowNumber
,ime.[ijis_message_error_id]
,ime.[message_id]
,ime.[message_version]
lo tanto, cuando OrdenarPor es 1, funciona. Se ordena por rx_date ... pero cuando lo envié a 2, falla con un error de conversión de tiempo de datos.
Parece que todos los tipos deben ser los mismos ...
Envío de un 5 funciona bien, ya que es una fecha y hora también.
¿Hay alguna manera de solucionarlo?
"¿Hay una manera Puedo arreglar esto? "Sí, hacer que todos sean del mismo tipo de datos –
@Richard aka cyberkiwi: Estoy al tanto de eso . No especifiqué nada específicamente: presumiblemente el relleno apropiado estaría involucrado. Anteriormente resolví esto de la manera en que respondió a continuación ... –