2014-03-05 19 views
0

如何運作案例我可以看到所有的條件都經過驗證和基於所有真實條件進行排序,它不存在第一場比賽嗎?當多個案例條件在row_number中保持不變時會發生什麼?

ROW_NUMBER() OVER (ORDER BY 

          CASE WHEN @SortColumn = N'DataUsage' AND @SortAsc = 0 THEN t.DataUsage END DESC, 
          CASE WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSMajorVersion END DESC , 
          case WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSMinorVersion END DESC, 
          case WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSBuildNumber END DESC 
         ) myRow 

問題是N'OSVersion」

回答

0

你有四個不同的case聲明。所以每個人都得到執行。

很難說你真正想要什麼,但也許你想將它們合併爲1?

 (CASE WHEN @SortColumn = N'DataUsage' AND @SortAsc = 0 THEN t.DataUsage 
       WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSMajorVersion 
       WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSMinorVersion 
       WHEN @SortColumn = N'OSVersion' AND @SortAsc = 1 THEN t.OSBuildNumber 
     END) DESC 
+0

什麼是需要是通過osversion排序。所以當我的@sortcolumn是'osversion'時,所有3個條件都會被滿足。我的問題是rown號將作爲ROW_NUMBER()OVER(ORDER BY OSMajorVersion DESC,OSMinorVersion DESC,OSBuildNumber DESC) – Mickey

相關問題