SQL Alternate结果2列,ORDER BY ROW_NUMBER()OVER(PARTITION BY fid,键ORDER BY fid,键),不重复每个键的fid

时间:2018-02-20 00:21:19

标签: sql-server

我正在使用MS SQL我想用两列替换我的sql结果。与

非常相似的东西
SELECT  id, fid, key
FROM    TEST
ORDER BY ROW_NUMBER() OVER ( PARTITION BY fid ORDER BY fid)

但是使用两列。例如,如果我在表格中有以下信息:

id | fid |键

1 | 1 | KEY1
2 | 2 | KEY1
3 | 3 | KEY1
4 | 1 | KEY2
5 | 2 | KEY2
6 | 3 | KEY2
7 | 1 | KEY3

我希望输出为左 1 | 1 | KEY1
5 | 2 | KEY2
3 | 3 | KEY1
4 | 1 | KEY2
2 | 2 | KEY1
6 | 3 | KEY2
7 | 1 | KEY3

4 | 1 | KEY2
2 | 2 | KEY1
6 | 3 | KEY2
7 | 1 | KEY3
5 | 2 | KEY2
3 | 3 | KEY1
1 | 1 | KEY1

因此fids的顺序从1变为n(在本例中为3),但每行也交替使用k键(本例中为3)

我试过

SELECT  id, fid, key
FROM    TEST
ORDER BY ROW_NUMBER() OVER ( PARTITION BY fid,key ORDER BY fid,key), fid

但这让我感到很高兴 1 | 1 | KEY1
4 | 1 | KEY2
7 | 1 | KEY3
2 | 2 | KEY1
5 | 2 | KEY2
3 | 3 | KEY1
6 | 3 | KEY2

这与我需要的非常接近,但它给了我每个键的fid值,当我只需要fid去1,2,3每行更改键时。有什么想法吗?

0 个答案:

没有答案