2013-02-06 71 views
5

我的SQL語句存在問題: 我使用SELECT語句,然後使用CASE當我使用order by。T主參數和次參數的SQL case語句參數

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'NA' THEN name END, 
CASE WHEN @sort = 'AD' THEN (isAuthorized) END DESC, 
CASE WHEN @sor = 'AA' THEN (isAuthorized) END 

isAuthorized是一個BIT值,所以我想在那裏使用二級命令。

我想是這樣的:

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'NA' THEN name END, 
CASE WHEN @sort = 'AD' THEN (isAuthorized, name) END DESC, 
CASE WHEN @sort = 'AA' THEN (isAuthorized, name) END  

但它不工作。

我使用SQL Server 2008.

任何幫助將不勝感激。

回答

7

如果你想訂購的結果通過name,然後第一組由isAuthorized@sort = ND使用此查詢:

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'ND' THEN isAuthorized END 

您可以結合CASE條款。我希望你明白了。

+1

我想要的是相反的,首先是isAuthorized,然後是名稱(因爲我排序了很多列)。但是你的回答指向了正確的方向,因爲我不知道如何將多於一個訂單的聲明組合在一起。謝謝一堆......評分和標記爲答案;) – CyberHawk

+0

很高興幫助! –