Sql 合并表中的行并匹配空值
哪个脚本将返回一个表,该表按ID合并下表中的行,并删除ID多次出现的空值。例如,ID3出现两次,ID217出现一次,在脚本运行之后,下面是它们的外观 脚本必须是老式的才能与SQL2000兼容。多谢各位Sql 合并表中的行并匹配空值,sql,sql-server,sql-server-2005,sql-server-2000,Sql,Sql Server,Sql Server 2005,Sql Server 2000,哪个脚本将返回一个表,该表按ID合并下表中的行,并删除ID多次出现的空值。例如,ID3出现两次,ID217出现一次,在脚本运行之后,下面是它们的外观 脚本必须是老式的才能与SQL2000兼容。多谢各位 ID PreOpOrg PreOpTreatment PostOpOrg PostOpTreatment 3 RBA11 02 RBA11 06 217 NULL NULL
ID PreOpOrg PreOpTreatment PostOpOrg PostOpTreatment
3 RBA11 02 RBA11 06
217 NULL NULL RN325 02
等等
ID PreOpOrg PreOpTreatment PostOpOrg PostOpTreatment
3 RBA11 02 NULL NULL
3 NULL NULL RBA11 06
217 NULL NULL RN325 02
364 NULL NULL RBA11 02
369 NULL NULL RN325 02
481 GR123 05 NULL NULL
834 RBA11 02 NULL NULL
834 NULL NULL RBA11 04
1066 NULL NULL RBA11 05
2123 NULL NULL RBA11 05
2246 NULL NULL RBA11 02
2246 RBA11 02 NULL NULL
2512 RBA11 04 NULL NULL
2512 NULL NULL RBA11 06
2694 NULL NULL RN325 05
2892 NULL NULL RBA11 06
2892 RBA11 05 NULL NULL
3311 RBA11 05 NULL NULL
3311 NULL NULL RBA11 06
3344 RBA11 02 NULL NULL
3362 RBA11 02 NULL NULL
3770 RBA11 05 NULL NULL
您可以将其作为聚合执行:
select ID, max(PreOpOrg) as PreOpOrg, max(PreOpTreatment) as PreOpTreatment,
max(PostOpOrg) as PostOpOrg, max(PostOpTreatment) as PostOpTreatment
from table t
group by id;
这适用于您提供的数据,因为只填充了一个字段。如果情况属实,则其中一列中的信息不会“丢失”。谢谢。如果每个字段都填充了不止一次呢?@Gordon Linoff,谢谢。对于一个ID,永远不应该有一列被多次填充,这样就可以工作了!