Ada*_*dam 2 sql-server sql-server-2008
我的表格有2列:Emp_Name和Emp_NR。
一个Emp_Name值可能具有2个不同的Emp_NR值。
我想创建一个SELECT仅获取Emp_Name和的单个值的语句Emp_NR
该语句应类似于Teradata中的内容:
SELECT
Emp_Name,
Emp_NR
FROM Table
QUALIFY Row_Number OVER (PARTITION BY Emp_Name ORDER BY Emp__NR DESC) = 1
Run Code Online (Sandbox Code Playgroud)
除此之外,我还想获得Emp_NR分配给特定的最高价Emp_Name。
Luk*_*zda 14
另一种方法是ORDER BY结合使用TOP 1 WITH TIES:
SELECT TOP 1 WITH TIES Emp_Name, Emp_NR
FROM Table
ORDER BY ROW_NUMBER() OVER (PARTITION BY Emp_Name ORDER BY Emp_NR DESC);
Run Code Online (Sandbox Code Playgroud)
性能可能比使用子查询的解决方案稍差。
你做得对。
SELECT Emp_NR, Emp_Name
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY Emp_Name ORDER BY Emp_NR DESC) AS RN, Emp_Name, Emp_NR
FROM YourTable
) AS T
WHERE T.RN = 1;
Run Code Online (Sandbox Code Playgroud)
这是正确的语法。
| 归档时间: |
|
| 查看次数: |
15873 次 |
| 最近记录: |