有没有一种方法可以合并SQL Server行查询?

时间:2019-08-20 10:43:52

标签: sql-server tsql

请查看我当前的汇总查询结果:

id      name mch
127664  ML  2
127666  ML  2
127667  ML  2
127670  ML  2
127671  ML  2
127672  ML  2
127674  ML  2
127675  ML  2
127678  ML  1
127680  ML  1
127665  ML  2

我要合并具有相同值的行。 只需合并名称列。 然后这是我期望的查询:

id      name    mch
127664  ML      2
127666          2
127667          2
127670          2
127671          2
127672          2
127674          2
127675          2
127678          1
127680          1
127665          2

我已经找到了一些问题,但仍然没有找到。 希望您能指导我进行处理。.

2 个答案:

答案 0 :(得分:4)

请您可以在此处尝试ROW_NUMBER技巧:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) rn
    FROM yourTable
)

SELECT
    id,
    CASE WHEN rn = 1 THEN name ELSE '' END AS name,
    mch
FROM cte
ORDER BY
    name,
    id;

但是通常,在您的表示层(例如PHP或Java)中可以更好地处理这种要求。

答案 1 :(得分:1)

您的查询应如下所示:

WITH t AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) counter
    FROM table //nameofyourtable
)

SELECT
    id,CASE WHEN counter = 1 THEN name ELSE '' END AS name, mch
FROM t ORDER BY
    name,
    id;