请查看我当前的汇总查询结果:
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
我已经找到了一些问题,但仍然没有找到。 希望您能指导我进行处理。.
答案 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;