【发布时间】:2014-07-02 12:23:23
【问题描述】:
我使用 SQL Server,并且只有当它们在两个特定列(在我的示例中为 Col_01 和 Col_02)中具有相同值时,我才需要合并多行。 当我合并它们时,我必须对一些列求和(在我的示例中为 Col_03 和 Col_04)。
我认为一个例子会更明确。这是我的简化表格:
| ID | Col_01 | Col_02 | Col_03 | Col_04 |
| 1 | ABC | DEF | 2 | 2 |
| 2 | ABC | DEF | 1 | 0 |
| 3 | DEF | GHI | 0 | 2 |
| 4 | ABC | GHI | 1 | 0 |
| 5 | JKL | GHI | 0 | 2 |
这是我更新后想要的:
| ID | Col_01 | Col_02 | Col_03 | Col_04 |
| 2 | ABC | DEF | 3 | 2 |
| 3 | DEF | GHI | 0 | 2 |
| 4 | ABC | GHI | 1 | 0 |
| 5 | JKL | GHI | 0 | 2 |
我合并了 ID 1 和 ID 2,因为它们具有相同的 Col_01 和相同的 Col_02。
我试过这样的查询
SELECT MAX(ID), Col_01, Col_02, SUM(Col_03), SUM(Col_04)
FROM Table
GROUP BY Col_01, Col_02
我得到了合并的行,但我丢失了未合并的行。
我不知道如何在 UPDATE 查询中正确使用它,以便合并具有相同 (Col_01、Col_02) 的行并保留其他行。你能帮我做这件事吗?
【问题讨论】:
-
可以使用join来更新。顺便说一句,您需要更新哪个 ID?
标签: sql-server tsql merge sql-update