【发布时间】:2020-11-04 15:44:46
【问题描述】:
重要更新:
当我尝试使用建议的
string_agg方法时,我收到此错误 - 指定类型 或 Redshift 表不支持的函数(每条 INFO 消息一个)。
原始问题
我有一个查询,但我正在努力将多行“透视”成一列字符串。
我有一个member 和一个category 表,每个成员可以有多个类别(这是对场景的简化)。
所以我需要写一个查询来显示每个成员有哪些类别,所以每个成员都有多个类别。当我在 Microsoft 世界工作时,我能够使用 pivot,但现在在 Postgres 中我找不到等效的方法。
我看到了对交叉表和其他一些方法的引用,但是在尝试时我收到错误消息,指出无法识别该函数。
我的尝试!
select
m.member_id,
array.join(c.category, ",") -- this is more like a programming approach but I need something similar to this
from member m
from join category c ON c.member_id = m.id
group by 1
数据集示例
https://dbfiddle.uk/?rdbms=postgres_13&fiddle=8ea4998f75f7db83d2360ff01bf02c82
我使用 Navicat Premium 作为我的“编辑器”
第二次尝试
select b.member_id, string_agg(distinct c.name, ',')
from bookings b
join category c on c.member_id = b.member_id
group by 1
【问题讨论】:
-
请提供样本数据、当前和期望的结果。您不喜欢当前查询的哪些方面?
-
您在寻找
string_agg(c.category, ",")吗? -
我已经用你的建议更新了我的问题,我认为它真的有效吗?我还在 string_agg 函数中添加了 distinct - 我认为这是正确的?
-
当我运行这个时,我得到这个令人担忧的错误 - Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。我们使用 postgres,但数据被提升到 aws redshift
标签: sql amazon-redshift string-aggregation