2010-04-25 56 views
0

我有一個存儲過程,提供一個學生表,它需要按姓氏,名稱等命令...它還需要按升序,降序排序,具體取決於參數@排序依據...SQL orderby/case問題:orderdirection失敗

代碼:

ORDER BY 
CASE 
WHEN @orderby = 'studentkey' THEN Studentkey END ASC, 
CASE 
WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC, 
CASE 
WHEN @orderby = 'initials' THEN Initials END ASC, 
CASE 
WHEN @orderby = 'initials' and @desc = 1 THEN Initials END DESC, 
CASE 
WHEN @orderby = 'firstname' THEN Firstname END ASC, 
CASE 
WHEN @orderby = 'firstname' and @desc = 1 THEN Firstname END DESC, 
CASE 
WHEN @orderby = 'nickname' THEN Nickname END ASC, 
CASE 
WHEN @orderby = 'nickname' and @desc = 1 THEN Nickname END DESC, 
CASE 
WHEN @orderby = 'insertion' THEN Insertion END ASC, 
CASE 
WHEN @orderby = 'insertion' and @desc = 1 THEN Insertion END DESC, 
CASE 
WHEN @orderby = 'surname' THEN Surname END ASC, 
CASE 
WHEN @orderby = 'surname' and @desc = 1 THEN Surname END DESC 
NED

有在@desc = 1個@desc = 0輸出之間的差別,但不是我的願望......

有誰有解?

+1

NED?你是說END? – paxdiablo 2010-04-25 11:51:14

+0

是啊:)沮喪的小證明... – Joris 2010-04-25 12:36:05

回答

1

試試這個:

CASE 
WHEN @orderby = 'studentkey' and @desc = 0 THEN Studentkey END ASC, 
CASE 
WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC, 
... 
+0

謝謝!我忽略了這一點,但仍然很奇怪,但事情是如何運作的 – Joris 2010-04-25 12:22:18