如何选择在两列中具有相同值集的行,从而连接第三列中的值?
Posted
技术标签:
【中文标题】如何选择在两列中具有相同值集的行,从而连接第三列中的值?【英文标题】:How to select rows which have same set of values in two columns and hence concatenate the values in the third column? 【发布时间】:2017-09-09 12:12:28 【问题描述】:Attached Image
我有附图所示的示例值。 我想要实现的是 PR_NUMBER 字段的值根据 PO_NUMBER 和 PO_ITEM 中的相同值连接起来。
虽然这是一个示例数据,但任何 n 行都可以具有相同的值,因此需要将 PR_NUMBER 列中的所有这些值串联起来。
我了解了 CURSORS 以循环遍历表格,但真的不知道如何处理它们。
预期的输出图像是
123 | 1 | 5678,6789
456 | 1 | 2322,3432
456 | 2 | 4678
【问题讨论】:
您真正使用的是哪个数据库.. ????? 不要在 sql 中使用循环 【参考方案1】:如果您使用的是 SAP HANA,那么您可以使用 STRING_AGG(Name, ',')
SELECT po_number, po_item, STRING_AGG(pr_number, ',')
from your_table
group by po_number, po_item;
如果你使用 mysql,你可以使用 group_concat
SELECT po_number, po_item, group_concat(pr_number, ',')
from your_table
group by po_number, po_item;
【讨论】:
谢谢!我已经发现 STRING_AGG 是 GROUP_CONTACT 的替代品。顺便问一下,没有这个功能有什么办法吗? whit sql not ... 【参考方案2】:您正在寻找group_concat()
:
select po_number, po_item, group_concat(pr_number)
from t
group by po_number, po_item;
【讨论】:
它说 GROUP_CONCAT 不是受支持的功能。 ://以上是关于如何选择在两列中具有相同值集的行,从而连接第三列中的值?的主要内容,如果未能解决你的问题,请参考以下文章