如何选择在两列中具有相同值集的行,从而连接第三列中的值?

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 不是受支持的功能。 ://

以上是关于如何选择在两列中具有相同值集的行,从而连接第三列中的值?的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 选择两列中具有相同值的行

如何删除R中两列中具有相同值但ID不同的行[重复]

如何获取熊猫数据框中的行,列中具有最大值并保留原始索引?

如何对两列求和并通过减去它们的聚合 SQL 和 C# 在第三列中显示结果?

如何使用 python 在两列中扩展具有日期范围的数据框?

pandas:删除两列中具有相同索引的行中的重复值