我正在使用row_number()表达式,但没有得到预期的结果。我有一个sql表,有些行是重复的。它们具有相同的“ BATCHID”,我想为它们获取第二行号,对于其他人,我使用第一行号。我该怎么做?
SELECT * FROM (SELECT * , ROW_NUMBER() OVER (PARTITION BY BATCHID ORDER BY SCAQTY) Rn FROM SAYIMDCPC ) t
WHERE Rn=1
这段代码仅向我返回第一行,但是我想为重复项获得第二行。
ROW_NUMBER()
为每一行提供一个唯一的计数器。您想使用RANK()
,这是相似的,但是要为具有相同值的行赋予相同的分数:
SELECT *
FROM (SELECT * , RANK() OVER (PARTITION BY batchid ORDER BY scaqry) rk
FROM sayimdcpc) t
WHERE rk = 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句