我有下表,其中给出了每个用户的多个电子邮件地址。
x1c 0d1x的数据
我需要在用户查询中将其展开为列,以便根据创建日期给予“最新”的3个电子邮件地址。因此,预期输出如下所示:
| 用户名|用户标识|email1|电子邮件2|电子邮件3|
| --|--|--|--|--|
| 玛丽| 123 |email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)|email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)的|email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)的|
| 乔| 345 |email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)的|[空]|[空]|
1条答案
按热度按时间yhqotfr81#
使用tablefunc模块中的
crosstab()
。字符串
我对第一个参数使用了美元引号,它没有特殊的含义。它只是方便在查询字符串中转义单引号,这是一种常见的情况:
详细的解释和说明:
特别是,对于“额外列”:
这里的“特殊困难”是:
→我们在子查询中替换为
row_number()
。→我们将外部
SELECT
限制为最多三个,并使用带有两个参数的crosstab()
,提供可能的键列表。注意
NULLS LAST
in theORDER BY
。