如何使用select合并postgres中的两行[重复]

Posted

技术标签:

【中文标题】如何使用select合并postgres中的两行[重复]【英文标题】:how to merge two rows in postgres using select [duplicate] 【发布时间】:2021-03-01 19:56:33 【问题描述】:

我有一个表格,其中的行看起来像这样

Account Currency Amount
1 USD 5
1 EUR 10
2 USD 8
3 EUR 4

有没有办法做一个选择查询,所以它会返回类似的东西

Account amount_usd amount_eur
1 5 10
2 8
3 4

usd 和 eur 是硬编码的,所以我不必从列中构建名称。

【问题讨论】:

这在这个问题中得到了很好的解释:***.com/questions/23060256/… 这能回答你的问题吗? Postgres - Transpose Rows to Columns 【参考方案1】:

您可以使用 Postgres 中使用 filter 的条件聚合:

select account,
       sum(amount) filter (where currency = 'USD') as usd_amount,
       sum(amount) filter (where currency = 'EUR') as eur_amount
from t
group by account;

【讨论】:

【参考方案2】:

你可以在条件下使用 sum() :

select account, sum(case when currency='USD' then amount end) Amount_USD,
sum(case when currency='EUR' then amount end) Amount_EUR
from myTable
Group by account

【讨论】:

以上是关于如何使用select合并postgres中的两行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用C语言怎么把文件中的两行合并成一行

MySQL SELECT 语句的两行之间的区别

如何比较同一表中的两行并使用存储过程返回数据作为响应

Postgres如何将2个单独的选择查询合并为1个

在 SQL 中排序时如何比较同一表中的两行?

如何在 SQL 查询中的两行上写属性名称