我有一个生成以下输出的查询。
PART TEST
---- ----
10 2
10 4
10 5
11 1
11 2
11 4
11 5
17 1
17 2
17 3
17 4
17 5
18 1
18 2
18 3
18 4
18 5
我正在尝试从1开始重新编号TEST。
PART NEW_TEST OLD_TEST
---- -------- --------
10 1 2
10 2 4
10 3 5
11 1 1
11 2 2
11 3 4
11 4 5
17 1 1
17 2 2
17 3 3
17 4 4
17 5 5
我一直在使用RANK()和ROW_NUMBER()函数,但没有得到我正在寻找的结果。
select DISTINCT
mptc.PART,
RANK() OVER(ORDER BY mptc.PART ASC) AS TEST,
ROW_NUMBER() OVER(PARTITION BY mptc.PART ORDER BY tpc.TEST ASC),
tpc.TEST
from ri.TESTS tpc
join ri.PARTS mptc
on tpc.PART_SYSID = mptc.PART
ORDER BY mptc.PART ASC
还有其他功能可以做到这一点......我不知道吗?
由于 jlimited
答案 0 :(得分:0)
我做了一些搜索并找到了答案......使用DENSE_RANK()函数。
SELECT
mptc.PART_SYSID,
DENSE_RANK() OVER(PARTITION BY mptc.PART_SYSID ORDER BY tpc.TEST) AS TEST_COLLECTION_PLAN,
ROW_NUMBER() OVER(PARTITION BY mptc.PART_SYSID,tpc.TEST ORDER BY tpc.SYSID) AS TEST_COLLECTION_ORDER
FROM ri.TESTS tpc
JOIN ri.PARTS mptc
ON tpc.PART_TEST_SYSID = mptc.SYSID
由于 jlimited