将数字分配给计算列 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
这可能非常简单,但出于某种原因,我很难准确指出如何做到这一点。我有一个名称列表以及与这些名称相关的城市。我想在基于 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