按带有条件和多个排序列的案例语句排序,否则



我希望能够根据选择的参数使用不同的列进行排序。 我可以让它适用于单列,但正在努力处理多列。 任何帮助将不胜感激。

ORDER BY
CASE WHEN @a like '%apples%' or @a like '%onions%' then
DeliveryScheduleItems.DropSequence, 
DeliveryAddresses.PostalCode,
Customers.CustomerId
Else
DeliverySchedules.DeliveryDate,
DeliveryAddresses.PostalCode,
Customers.CustomerId
End

试试这个,

ORDER BY
CASE 
WHEN @a like '%apples%' or @a like '%onions%' then
DeliveryScheduleItems.DropSequence, 
DeliveryAddresses.PostalCode,
Customers.CustomerId
WHEN @a not like '%apples%' AND @a not like '%onions%' then
DeliverySchedules.DeliveryDate,
DeliveryAddresses.PostalCode,
Customers.CustomerId
End

您需要多个条件:

ORDER BY (CASE WHEN @a like '%apples%' or @a like '%onions%'
THEN DeliveryScheduleItems.DropSequence
END),
(CASE WHEN @a like '%apples%' or @a like '%onions%'
THEN NULL
ELSE DeliverySchedules.DeliveryDate
END),
DeliveryAddresses.PostalCode,
Customers.CustomerId

请注意,对两个不同的列使用了两个CASE表达式。据推测,DeliveryDateDropSequence有不同的类型。 最好单独订购。

最新更新