【问题标题】:Is there a way to Merge SQL Server Row Query?有没有办法合并 SQL Server 行查询?
【发布时间】:2019-12-25 13:35:40
【问题描述】:

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

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

我已经在寻找一些问题,但仍然没有找到。 我希望你能指导我处理这个..

【问题讨论】:

标签: sql-server tsql


【解决方案1】:

可以在这里尝试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)中得到更好的处理。

【讨论】:

    【解决方案2】:

    你的查询应该是这样的:

    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;
    

    【讨论】:

    • 添加与现有答案中相同的代码有什么意义?
    • @ZoharPeled 我已经标记了这个问题,因为它与行号有关,可能没有刷新页面。我们可以有相同的思维方式:)
    猜你喜欢
    • 2022-11-24
    • 2019-07-06
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多