我正在考虑使用over (partition by xx)的SQL查询。
我想知道如何为我得到的每个分区添加一个具有ID的列。例如,请参阅下表:
Name Country
---------------------------
Mark USA
Paul USA
Jennifer Canada
Carla Canada
José Mexico
Pablo Peru在这个查询之后(使用一个假设的ID_PARTITION()函数):
select ID_PARTITION(), row_number() over (partition by country), name, country from tableabove;我会得到:
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关于如何实现这样的东西,有什么线索吗?
干杯,
弗朗西斯
发布于 2017-07-10 18:06:51
这样如何:
SELECT DENSE_RANK() OVER ( ORDER BY Country) AS ID
,ROW_NUMBER() OVER (PARTITION BY Country ORDER BY Country) AS RowNumber
,name
,country
FROM tableabove发布于 2017-07-10 18:03:24
您可以使用dense_rank,如下所示:
Select Id_Partition = dense_rank() over(order by country),
RowNum = row_number() over(partition by country order by name),
[name], country
from yourtablehttps://stackoverflow.com/questions/45009072
复制相似问题