2016-12-15 56 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