合并表中的行并省略NULL值

时间:2014-03-24 17:43:01

标签: sql sql-server sql-server-2005 sql-server-2000

哪个脚本会返回一个表,该表在下表中按ID合并行,并删除ID出现多次的NULL值。因此,例如ID 3出现两次并且ID 217出现一次,并且在脚本运行之后是下面的样子 该脚本必须是旧学校才能与SQL2000兼容。谢谢。

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

1 个答案:

答案 0 :(得分:2)

您可以将此作为聚合:

select ID, max(PreOpOrg) as PreOpOrg, max(PreOpTreatment) as PreOpTreatment,
       max(PostOpOrg) as PostOpOrg, max(PostOpTreatment) as PostOpTreatment
from table t
group by id;

这适用于您提供的数据,因为只填充了一个字段。没有"失去"其中一列中的信息,如果是这样的话。