sql-server - SQL Server 中的类似 QUALIFY 的函数

标签 sql-server sql-server-2008

我的表有 2 列: Emp_NameEmp_NR

一个 Emp_Name 值可能有 2 个不同的 Emp_NR 值。

我想创建一个 SELECT 语句,它只获取 Emp_NameEmp_NR 的单个值

该语句应该类似于 Teradata 中的内容:

SELECT 
    Emp_Name,
    Emp_NR
FROM Table
QUALIFY Row_Number OVER (PARTITION BY Emp_Name ORDER BY Emp__NR DESC) = 1

除此之外,我想获得分配给特定 Emp_NR 的最高 Emp_Name

最佳答案

你做的一切都对。

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;

这是正确的语法。

关于sql-server - SQL Server 中的类似 QUALIFY 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917686/

相关文章:

c# - 在 sql 命令中将字符串作为日期时间参数传递

sql-server-2008 - SQL Server 数据库和 View 中的表数是否有限制?

sql - 如何克服 OpenXML 的 8000 个字符限制?

sql - 为每个请求创建到 MS SQL 数据库的新 RJDBC 连接是否存在性能/其他缺点?

sql - 列的创建者 - SQL Server

sql-server - 创建索引时为什么要使用 INCLUDE 子句?

c# - "cursor like"读取 CLR 过程/函数内部

非企业服务器上的 SQL 分区?

c# - log4net - 如何在连接断开后重新建立与数据库的连接

sql-server - 将程序集添加到缓存 : This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded 失败