2017-07-17 74 views
0

我希望能夠根據所選參數使用不同列進行排序。 我可以得到它的單列工作,但掙扎與多個。 任何幫助將不勝感激。按條件和多個排序列或其他條件排序

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 

回答

0

試試這個,

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 
+0

非常感謝您的回覆,這適用於單個排序列,但不適用於多個列。 ','附近語法不正確 – jaybee

0

您需要多個條件:

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有不同的類型。最好單獨訂購。