将sql中的重复记录行组合成一行

时间:2016-12-21 14:30:06

标签: sql-server-2014

我在一个sql表中有重复的记录。行具有相同的ID,但在不同的字段中具有不同的值。我如何将这两行或更多行合并或合并为一行。请帮忙,

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过指定GROUP BY子句对某些字段上的行进行分组。

在您的情况下,您会在ID列上进行分组。对于您在SELECT子句中未在GROUP BY子句中指定的列(即ID以外的列),您必须应用aggregate function(例如SUMMAXMIN,...)。

修改 - 基于您的图片的简化示例:

SELECT
    MasterID,
    CUSTNAME=MIN(CUSTNAME),
    ER1=MIN(ER1),
    ER1_BU=MIN(ER1_BU)
    -- For the other fields, the idea is the same
FROM
    your_table
GROUP BY
    MasterID
ORDER BY
    MasterID;

此示例为每个字段指定特定MasterID的字段的最小值。你没有真正定义你的意思" merge"。也许你希望结果是一个特定的合并,你必须进一步澄清这个例子是不是"合并"你想要的行。