将csv的多行合并为一行

ccgok5k5  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(157)

我正在连接两个用于记录雇佣记录的表。我需要将具有多个职位的雇员合并到一行中,并且只使用几列指定其他职位。例如:
| 员工姓名|工作|建筑物|识别号|
| - ------|- ------|- ------|- ------|
| 苏西·Q|贝克|厨房|第二章|
| 苏西·Q|尼姑|教堂|第二章|
预期输出
| 员工姓名|工作|建筑物|识别号|
| - ------|- ------|- ------|- ------|
| 苏西·Q|贝克修女|厨房,教堂|第二章|
对于如何在员工列表中识别某人是否重复,我有点不知所措。本例中的DB是Snowflake,如果它有区别的话。我有根据的猜测是,以某种方式在ID中找到重复项,然后将重复项的结果连接到工作和建筑字段中,但我愿意听取建议。

5m1hhzi4

5m1hhzi42#

虽然LISTAGG是一个可用于解决此问题的子句-但此子句仅在Oracle中可用。
此子句在PostgreSQL中的等效语句为STRING_AGG。您可以尝试以下语句来生成所需的输出-这是通过将JobBuilding的所有条目聚合到一个字符串中来实现的。然后使用GROUP BY将所有条目按雇员姓名聚合到一个逗号分隔的字符串中。

SELECT employee_name, STRING_AGG (job,', '), STRING_AGG (building,', ') FROM table group by employee_name;

相关问题