我有一個要求,根據一個整數輸入到一個參數列中排列一個結果集。在一個CASE中按順序排列和不同類型
問題是,我需要爲OrderBy使用CASE,並且它似乎代碼接受case列中的第一個'TYPE'...任何其他類型都會失敗。
我的代碼是這樣的:
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]
所以,當排序依據是1,它的工作原理。它按rx_date排序......但是當我發送它爲2時,它會因數據時間轉換錯誤而失敗。
它看起來像所有的類型必須是相同的...
發送5正常工作,因爲這是一個日期時間太長。
有沒有辦法解決這個問題?
「有什麼辦法我可以解決這個問題嗎? 「 - 是的:讓他們都是相同的數據類型 – 2011-03-07 00:44:44
@理查又名cyberkiwi:我意識到這一點。我沒有具體說明任何事情:大概會有適當的填充。我以前用下面的方法解決了這個問題... – 2011-03-07 00:48:29