将行号添加到此T-SQL查询
如何将行号添加到此查询结果将行号添加到此T-SQL查询,sql,sql-server,Sql,Sql Server,如何将行号添加到此查询结果 SELECT DISTINCT VehicleSpecs.SubmittedById, COUNT(VehicleSpecs.SubmittedById) AS NumCars, aspnet_Users.UserName FROM VehicleSpecs INNER JOIN aspnet_Users ON VehicleSpecs.SubmittedById = aspnet_Users.UserId WHERE (LEN(Vehicle
SELECT DISTINCT
VehicleSpecs.SubmittedById,
COUNT(VehicleSpecs.SubmittedById) AS NumCars,
aspnet_Users.UserName
FROM
VehicleSpecs
INNER JOIN aspnet_Users ON VehicleSpecs.SubmittedById = aspnet_Users.UserId
WHERE
(LEN(VehicleSpecs.SubmittedById) > 0)
GROUP BY
VehicleSpecs.SubmittedById,
aspnet_Users.UserName
ORDER BY
NumCars DESC
添加:ROW\u NUMBER()(按NumCars订购)
编辑:
将整个查询包装在子查询中,并在外部查询中添加
row\u number
select *, row_number() over(order by (select 0)) as rn
from
(
select distinct -- your columns
from YourTable
) as T
order by NumCars desc
MS SQL是否不允许使用空的
over()
子句?@a\u horse\u和\u no\u name-不用于行号。这是给max和min的。@MikaelEriksson:谢谢。orderby0
难道不会做同样的事情吗?@MartinSmith-是的,我一开始认为这可能很重要,但因为他也在做一个group by,所以我认为在这种情况下这无关紧要。@a_horse_没有名字-它将任何整数常量解释为试图使用列序号,这是不允许的。不过,通常也不允许使用常量<代码>ORDER BY 1.0/0虽然工作,但这不是整数数据类型,也不会被折叠成常数。我不明白我必须在查询中把它放在哪里?我尝试过你的查询,但我得到了以下错误:Msg 208,级别16,状态1,第1行无效对象名称“VehicleSpecs”。我也尝试过[CarSpecs]。[dbo]。[VehicleSpecs]…但我得到了相同的错误…非常奇怪,错误只出现在MSSQL studio和我的asp.net应用程序中。我需要按NumCars DESC排序,如果我添加DESC,则行号以相反的顺序显示,它们应该显示为1,2,3…我已经解决了问题,谢谢!我必须在两个订单上都添加DESC
select *, row_number() over(order by (select 0)) as rn
from
(
select distinct -- your columns
from YourTable
) as T
order by NumCars desc