Sql server Sql:Aggregate函数:如何获取示例中给出的表的行号列

Sql server Sql:Aggregate函数:如何获取示例中给出的表的行号列,sql-server,Sql Server,我有一个如下生成的临时表 CarName CarNumber Count DiscountedPrice Ford C296A23E1 3 5715.13 Ford C296A23E2 3 5715.13 Ford C296A23E3 3 5715.13 BMW 311426001 5 1999 BMW 311426002 5 1999 BMW 311426003

我有一个如下生成的临时表

CarName CarNumber   Count   DiscountedPrice
Ford    C296A23E1   3       5715.13
Ford    C296A23E2   3       5715.13
Ford    C296A23E3   3       5715.13
BMW     311426001   5       1999
BMW     311426002   5       1999
BMW     311426003   5       1999
BMW     311426004   5       1999
BMW     311426005   5       1999
Honda   426000021   4       0
Honda   426000022   4       0
Honda   426000023   4       0
Honda   426000024   4       0
上表是由于查询的表很少

我想在这个临时表中增加一列(Rown编号),如下所示

RowNumber   CarName CarNumber   Count   DiscountedPrice
1           Ford    C296A23E1   3   5715.13
1           Ford    C296A23E2   3   5715.13
1           Ford    C296A23E3   3   5715.13
2           BMW     311426001   5   1999
2           BMW     311426002   5   1999
2           BMW     311426003   5   1999
2           BMW     311426004   5   1999
2           BMW     311426005   5   1999
3           Honda   426000021   4   0
3           Honda   426000022   4   0
3           Honda   426000023   4   0
3           Honda   426000024   4   0
基本上,我不希望只需要行数,我可以使用row_number()函数获得行数,但我希望CarName不需要,并且对于属于特定汽车的所有行都要重复

知道怎么做吗?

使用密集等级:

DENSE_RANK() over(order by Carname)

使用
密集等级
。以下示例按字母顺序对制造商进行排序:

SELECT *, RowNumber = DENSE_RANK() OVER (ORDER BY CarName)
FROM table_name

只需使用dense_rank()?这就是新手和专家之间的区别:)今天早上我就开始想入非非了。