2016-12-15 88 views
0

我收到了一個問題重新排序。我想通過UsernameUserType來訂購,而不會損壞NumRow訂單。它應該是1,2,3等,以下是圖像我目前的結果是:SQL:按2列重新排序

enter image description here

這是當前的SQL:

WITH ReceiverList AS 
(
    SELECT 
    ROW_NUMBER() OVER (ORDER BY receiver.username asc) NumRow, 
    receiver.username AS Username, 
    user_lookup.user_login_id AS UserID, 
    CASE 
     WHEN user_lookup.username = user_lookup.user_login_id THEN 'RECEIVER' 
     ELSE 'SUB-RECEIVER' 
    END AS UserType 
    FROM receiver 
    JOIN user_lookup 
    ON receiver.username = user_lookup.username 
) 

SELECT TOP 4 * 
FROM ReceiverList 

這裏是我想要的結果,但該命令( NumRow)應該是1,2,3,4。這個sql我正在使用數據表ajax內部進行排序和搜索。請幫助我們。

enter image description here

回答

0

根據你的結果,你也想通過UserId訂購:

WITH ReceiverList AS (
     SELECT r.username AS Username, 
      ul.user_login_id AS UserID, 
      (CASE WHEN ul.username = ul.user_login_id THEN 'RECEIVER' 
        ELSE 'SUB-RECEIVER' 
       END) AS UserType 
     FROM receiver r JOIN 
      user_lookup ul 
      ON r.username = ul.username 
    ) 
SELECT TOP 4 
     row_number() over (username, usertype, userid) as rownum 
     rl.* 
FROM ReceiverList 
ORDER BY rownum; 

在它的定義相同SELECT你不能使用usertype