0
点赞
收藏
分享

微信扫一扫

Sqlserver如何去重取第一行?

在 SQL Server 中,可以使用 ROW_NUMBER() 函数结合 CTE (Common Table Expression) 来实现去重并取第一行的功能。以下是一个具体的例子:

假设我们有一个名为 employees 的表,其中包含员工的信息,如下所示:

id

name

department

salary

1

张三

IT

5000

2

李四

IT

6000

3

王五

HR

4500

4

赵六

IT

5000

5

钱七

HR

4500

我们希望根据部门去重,并保留每个部门薪水最高的员工信息。可以使用以下 SQL 语句实现:

WITH CTE AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS row_num
    FROM employees
)
SELECT id, name, department, salary
FROM CTE
WHERE row_num = 1;

执行上述 SQL 语句后,将得到以下结果:

id

name

department

salary

2

李四

IT

6000

3

王五

HR

4500

在这个例子中,我们首先使用 ROW_NUMBER() 函数为每个部门的员工分配一个行号,按照薪水降序排列。然后,我们在 CTE 中筛选出行号为 1 的记录,即每个部门薪水最高的员工信息。

重点:

在SQL Server中,去重取第一行的需求常见于需要处理包含重复记录的数据表时,我们希望保留每组重复数据的第一条记录,删除其余重复的记录。这可以通过多种方法实现,但其中一种高效且常用的方法是使用ROW_NUMBER()函数。

举报

相关推荐

0 条评论