Sql 用于'的结果的ID;按';分区;?

Sql 用于'的结果的ID;按';分区;?,sql,sql-server,Sql,Sql Server,我正在考虑使用一个SQL查询,其中我将使用over(partitionbyxx) 我想知道如何为我得到的每个分区添加一个ID为的列。 例如,请参见下表: Name Country --------------------------- Mark USA Paul USA Jennifer Canada Carla Canada José Mexico Pablo Peru 在此查询

我正在考虑使用一个SQL查询,其中我将使用
over(partitionbyxx)

我想知道如何为我得到的每个分区添加一个ID为的列。 例如,请参见下表:

Name          Country
---------------------------
Mark          USA
Paul          USA
Jennifer      Canada
Carla         Canada
José          Mexico
Pablo         Peru
在此查询之后(使用假设的ID_PARTITION()函数):

我会得到:

ID   Row_number()    Name     Country
_______________________________________
1               1    Mark     USA
1               2    Paul     USA
2               1    Jennifer Canada
2               2    Carla    Canada
3               1    José     Mexico
4               1    Pablo    Peru
关于如何实现这样的东西有什么线索吗

干杯


弗朗西斯

您可以使用如下密集等级:

Select Id_Partition = dense_rank() over(order by country),
       RowNum = row_number() over(partition by country order by name),
       [name], country
 from yourtable
那么:

SELECT DENSE_RANK() OVER ( ORDER BY Country) AS ID
      ,ROW_NUMBER() OVER (PARTITION BY Country ORDER BY Country)  AS RowNumber
      ,name
      ,country
  FROM tableabove

您正在运行哪个版本的SQL Server?您可以查看滞后/超前功能。谢谢,Rich!我来检查一下。我不知道服务器的确切版本,但我会检查一下。为什么
USA
获取
ID
as
1
您如何订购?我认为按rownum订购在这里会起作用。是的,订购将基于其他一些列,但OP必须提供这一点
SELECT DENSE_RANK() OVER ( ORDER BY Country) AS ID
      ,ROW_NUMBER() OVER (PARTITION BY Country ORDER BY Country)  AS RowNumber
      ,name
      ,country
  FROM tableabove