【发布时间】:2018-06-26 21:32:37
【问题描述】:
给定下表:
A B C D E
a1 b1 NULL NULL e1
NULL NULL c1 d1 NULL
a1 b1 c1 NULL NULL
我想运行一个查询,只要至少有一个列具有相等的值(NULL = NULL 除外),就会合并/更新和删除现有行以生成下表:
A B C D E
a1 b1 c1 d1 e1
请注意,任何列中都没有唯一 ID,因为任何列都可能有 NULL 值。
您能帮忙吗?
编辑:
如果任何列不共享相同的值,我会将它们作为单独的记录;这不会影响任何其他记录。
例如,如果第 3 行是:
A B C D E
a1 b1 c1 NULL e2
那么所需的输出将是:
A B C D E
a1 b1 NULL NULL e1
a1 b1 c1 d1 e2
因为第 1 行已经有一个 e1 e2 (所以留作单独的记录);并且第 2 行和第 3 行被合并,因为它们共享 c1 作为一个公共 C 值并且也没有任何具有不同值的列(NULLS 除外)。
另一个例子:
如果有额外的行,第 4 行(与原始表格):
A B C D E
NULL NULL c1 d2 NULL
那么所需的输出将是:
A B C D E
a1 b1 c1 d1 e1
a1 b1 c1 d2 e1
【问题讨论】:
-
您应该展示一个更好的数据示例,该示例汇总为多行。
-
另外,如果样本数据中的第 3 行包含 E 值 e2,您将如何处理?还是存在 C 值为 c1 且 D 值为 d2 的附加行的情况?
标签: sql sql-server