SQL Server 将 2 行合并为 1 行

作者:编程家 分类: sqlserver 时间:2025-06-21

使用 SQL Server 将 2 行合并为 1 行

在数据库管理系统中,SQL Server 是一种常用的关系型数据库管理系统。在某些情况下,我们可能需要将数据库中的两行数据合并为一行,以便更方便地进行数据分析和处理。本文将介绍如何使用 SQL Server 实现这一操作,并提供案例代码进行演示。

案例代码:

假设我们有一个名为 "students" 的表,其中包含以下列:`id`、`name` 和 `age`。我们希望将具有相同 id 的两行合并为一行,并将结果存储在一个新的表中。

首先,我们可以创建一个新的表 "merged_students",用于存储合并后的结果:

sql

CREATE TABLE merged_students (

id INT PRIMARY KEY,

name VARCHAR(50),

age1 INT,

age2 INT

);

接下来,我们可以使用 SQL 的 `INSERT INTO SELECT` 语句将数据从原始表中合并到新表中。我们需要使用 `GROUP BY` 子句将具有相同 id 的行分组,并使用聚合函数 `MIN` 和 `MAX` 来获取每个分组中的最小和最大 age 值。

sql

INSERT INTO merged_students (id, name, age1, age2)

SELECT id, name, MIN(age) AS age1, MAX(age) AS age2

FROM students

GROUP BY id, name;

上述代码将根据 id 和 name 分组,并将每个组中的最小 age 值存储在 age1 列中,将最大 age 值存储在 age2 列中。通过这种方式,我们成功地将两行数据合并为一行,并将结果存储在新表 "merged_students" 中。

使用 SQL Server 将 2 行合并为 1 行的步骤:

1. 创建一个新的表,用于存储合并后的结果。

2. 使用 `INSERT INTO SELECT` 语句将数据从原始表中合并到新表中。

3. 使用 `GROUP BY` 子句将具有相同 id 的行进行分组。

4. 使用聚合函数 `MIN` 和 `MAX` 来获取每个分组中的最小和最大值。

5. 将合并后的结果存储在新表中。

示例:

假设我们有以下 "students" 表:

| id | name | age |

|----|-------|-----|

| 1 | Alice | 18 |

| 1 | Alice | 20 |

| 2 | Bob | 22 |

| 2 | Bob | 25 |

我们希望将具有相同 id 的行合并为一行,并将结果存储在新表 "merged_students" 中。执行上述案例代码后,新表中的数据如下:

| id | name | age1 | age2 |

|----|-------|------|------|

| 1 | Alice | 18 | 20 |

| 2 | Bob | 22 | 25 |

通过合并操作,我们将原始表中的两行数据合并为一行,同时保留了每个分组中的最小和最大 age 值。这样,我们可以更方便地进行后续的数据分析和处理。

SQL Server 提供了强大的功能来处理和操作数据库中的数据。通过使用 `INSERT INTO SELECT` 语句和聚合函数,我们可以将具有相同 id 的两行数据合并为一行,并将结果存储在新表中。这种操作可以提高数据处理的效率,并简化后续的数据分析工作。