T-SQL ORDER BY一列与另一列混合

时间:2017-01-17 13:36:36

标签: sql sql-server tsql sql-order-by

我真的需要你的帮助。我必须通过一些特定的顺序从SQL表中获取一些数据。所有数据都应按KeyID降序排序,但如果第二列中有一些行具有相同数据,则必须用其他行分隔。

例如,我们有这样的表:

KeyID    UserID
1         15
2         17
3         19
4         19
5         15
6         17
7         17

在结果表中,它应该是

KeyID    UserID
7         17
5         15
6         17
4         19
2         17
3         19
1         15

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

这不会产生你想要的那种,但它应该分散出来的关键词:

order by row_number() over (partition by userId order by keyid desc),
         keyid desc

答案 1 :(得分:0)

这应该适用于最多2个连续记录共享相同Rx.Observable.merge( Rx.Observable.just(1), Rx.Observable.just(1).delay(1000) ).distinctUntilChanged(1000) .subscribe(x => console.log(x)) 的简单情况:

distinctUntilChanged()

答案 2 :(得分:0)

以下查询可以正常工作。

WITH TEMP AS(
SELECT  *,
        ROW_NUMBER() OVER(PARTITION BY USERID ORDER BY KEYID DESC)ROW,
        ROW_NUMBER()OVER(ORDER BY KEYID DESC)ROW1 
FROM    USERS
        )

SELECT  KEYID,USERID 
FROM    (
        SELECT KEYID,USERID,ROW1,ROW FROM TEMP
        WHERE ROW<>2
        UNION 
        SELECT KEYID,USERID,ROW1+1 ROW1, ROW FROM TEMP
        WHERE ROW=2
        )B
ORDER BY ROW1 ASC

以下是我的输出:enter image description here