【问题标题】:JOIN LINES in BigSQL where PRODUCTs are the SAME连接 BigSQL 中产品相同的行
【发布时间】:2020-06-11 14:37:52
【问题描述】:

我在下面有这个示例表

+---------+----------------------+
| PRODUCT | TYPE                 |
+---------+----------------------+
| WIN 10  | Home                 |
+---------+----------------------+
| WIN 10  | Pro                  |
+---------+----------------------+
| WIN 10  | Pro for Workstations |
+---------+----------------------+
| Linux   | Ubuntu               |
+---------+----------------------+
| Linux   | Red Hat              |
+---------+----------------------+
| Linux   | Fedora               |
+---------+----------------------+

我想使用 MySQL 将其更改(转置)以得到如下所示的结果

+---------+-------------------------------+
| PRODUCT | TYPE                          |
+---------+-------------------------------+
| WIN 10  | Home,Pro,Pro for Workstations |
+---------+-------------------------------+
| Linux   | Ubuntu,Red Hat,Fedora         |
+---------+-------------------------------+

你能帮我解决这个问题吗?我已尝试使用此论坛的所有方法,但无法获得所需的结果,非常感谢您的帮助

【问题讨论】:

  • 考虑处理应用代码中数据显示的问题。

标签: mysql pivot concat unions bigsql


【解决方案1】:

在 mysql 中你可以使用 group_concat

select product, group_concat(type)
from my_table 
group by product 

或按顺序排列

select product, group_concat(type order by type)
from my_table 
group by product 

对于 BigSQL,等效函数应该是 LISTAGG(type)

【讨论】:

  • 对于 BigSQL,您可以尝试使用 LISTAGG(type)
  • 我终于能够使用LISTAGG(DISTINCT TYPE,',') WITHIN GROUP (ORDER BY TYPE) 连接TYPE,但是当我在WHERE 子句中指定它时,我只能为一个PRODUCT 执行此操作。使用 SELECT PRODUCT, LISTAGG(DISTINCT TYPE,',') WITHIN GROUP (ORDER BY TYPE) from My_table 时,此 siply 不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多