【发布时间】:2014-12-01 13:43:31
【问题描述】:
我想将两行合并为一,然后删除过时的行。 这是我的意思的一个小例子。
初始数据:
id | part A | part B
0 | OK | NULL
1 | NULL | OK
将 1 合并为 0,然后删除 1,结果如下。
id | part A | part B
0 | OK | OK
什么是最好的方法。我忽略了某种合并/组合功能。
提前致谢。
附言。可能与此重复:possible duplicate 但它没有得到好的答案。
编辑: 我正在使用 MS SQL (Server 2012)
【问题讨论】:
-
ID=0 的行和 ID=1 的行有什么关系?
-
没有关系。用户有两条损坏的记录,应该是一条记录。用户必须首先使用有根据的猜测并选择两条记录合并为一条记录,这可能会覆盖某些数据。所以我需要的是关于如何将两条记录合并为一条的声明(由用户在 id 上选择)
-
所以,关系是有人给了我们两个特定的
ID值。其他列值应该从较高的ID行复制到较低的ID行,然后应该删除较高的ID行?两行应该发生什么在同一列中有非NULL数据(或者这种情况不会发生)? -
正如我之前的评论所说:可能会覆盖一些数据。允许覆盖数据。用户指定要组合的两个 id,第二个到第一个。覆盖数据几乎总是会发生,但这是允许和期望的。但是不能复制 NULL 值。
标签: sql sql-server merge rows