将数字分配给计算列 SQL 服务器中的组

Assign Numbers to Groups in Calculated Column SQL Server

这可能非常简单,但出于某种原因,我很难准确指出如何做到这一点。我有一个名称列表以及与这些名称相关的城市。我想在基于 1) 名称和 2) 城市的计算列中分配一个数字。示例代码如下:

Name       |       City      |   Calculated Column
John               NYC                 1
John               NYC                 1
John               NYC                 1
John                LA                 2
John                LA                 2
Chris              NYC                 1
Chris               SF                 2
Christ              SF                 2 
Chris               LA                 3

我假设我需要使用 over 和 partition 函数,但无法正确计算上面的 'Calculated Column'。任何帮助将不胜感激。非常感谢!

我想你可以使用 dense_rank 如下:

Select *, [Computed Column]= dense_rank() over(Partition by [Name] order by City) 
   from yourtable

创建 TABLE 测试 ( 名称 VARCHAR(10), 城市 VARCHAR(5) )

插入测试 价值观 ('John','NYC'), ('John','NYC'), ('John','NYC'), ('John','LA'), ('John','LA'), ('Chris','NYC'), ('Chris','SF'), ('Christ','SF'), ('Chris','LA')

SELECT NAME,CITY,dense_rank() OVER(partition by name ORDER BY city desc) 计算列 来自测试

---输出---

NAME CITY 计算列 克里斯 小前锋 1 克里斯纽约 2 克里斯洛杉矶 3 基督 SF 1 约翰纽约 1 约翰纽约 1 约翰纽约 1 约翰洛杉矶 2 约翰洛杉矶 2