【问题标题】:how to merge 3 rows with the same data except 1 column?如何将 3 行与 1 列以外的相同数据合并?
【发布时间】:2023-02-21 20:21:45
【问题描述】:

我的输出是这样的:

id order status item supplier confirm date customer Manager
555222 approved 12421 Hawi 12/02/2023 0122 George
555222 approved 12421 Hawi 12/02/2023 0122 Michael
555222 approved 12421 Hawi 12/02/2023 0122 Tom
543677 approved 85332 Mint 27/01/2023 0324 John
200013 approved 90210 Mint 27/01/2023 0714 Brad
111111 approved 80765 Sweet 11/01/2023 0122 George
111111 approved 80765 Sweet 11/01/2023 0122 Michael
111111 approved 80765 Sweet 11/01/2023 0122 Tom

我试图通过使用 group_concat 和 seperate 将客户 0122 的所有经理合并为一行,但我在“分组依据”方面遇到了困难,因为我在选择中有更多字段(如输出中的 78 列)。 我想知道我的查询是否有任何方法可以使用“where”子句来搜索我的所有客户,如果他们有超过 1 位经理,如果有,查询将做一些事情来合并他们? ***经理列和客户列来自不同的表。 例如我想得到的输出:

id order status item supplier confirm date customer Manager
555222 approved 12421 Hawi 12/02/2023 0122 George, Michael, Tom
543677 approved 85332 Mint 27/01/2023 0324 John
200013 approved 90210 Mint 27/01/2023 0714 Brad
111111 approved 80765 Sweet 11/01/2023 0122 George, Michael, Tom

【问题讨论】:

    标签: mysql sql where-clause


    【解决方案1】:

    通过使用组列使用 group_concat() 并将其作为第一个 cte,然后在另一个中选择其余的 72 列并加入第一个 cte 所以 sudo 代码将如下所示

    with cte as (
        select idorder,status,item,supplier,confirmdate,customer,group_concat(manager)
        from table_name
        group by idorder,status,item,supplier,confirmdate,customer
    ),  select yours other column from table_name a join cte b on a.col1=b.col1 ..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多