Sql 用于'的结果的ID;按';分区;?
我正在考虑使用一个SQL查询,其中我将使用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 在此查询
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
as1
您如何订购?我认为按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