选择具有不同结果的查询中的Row_Number

时间:2015-06-15 12:18:12

标签: sql select sql-server-2012 distinct row-number

我在SQL Server 2012中有一个查询: -

SELECT DISTINCT 
    FIELD_1, FIELD_2
FROM 
    TABLE_A

现在我想获得每条记录的行号。所以我为此目的使用了ROW_NUMBER()函数。

SELECT DISTINCT 
    ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId
    FIELD_1, FIELD_2
FROM 
    TABLE_A

此查询不会给我明显的结果 如何使用行号检索不同的结果?

3 个答案:

答案 0 :(得分:3)

当您使用DISTINCT时,您不应忘记它会在ROW_NUMBER之类的窗函数之后应用,这会使您的所有行都是唯一的。

所以试试这个:

SELECT 
    ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId,
    FIELD_1, FIELD_2
FROM 
    TABLE_A
GROUP BY
    FIELD_1, FIELD_2

答案 1 :(得分:1)

尝试这个

SELECT 
ROW_NUMBER() OVER (ORDER BY FIELD_1, FIELD_2) AS rowId
FIELD_1, FIELD_2
FROM (select DISTINCT FIELD_1, FIELD_2 TABLE_A ) a

答案 2 :(得分:0)

您正在选择DISTINCT ROW_NUMBER()。行号显然是唯一的(例如不同的),所以这对你想要实现的目标真的起作用。