如何使用select合并postgres中的两行

时间:2021-03-01 19:56:33

标签: sql postgresql

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

<头>
帐号 货币 金额
1 美元 5
1 欧元 10
2 美元 8
3 欧元 4

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

<头>
帐号 amount_usd amount_eur
1 5 10
2 8
3 4

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以在条件为 case 时使用 sum() :

npm start

> fed-entry-level-exam-root@1.0.0 start C:\entry-level-exam_19\entry-level-exam
> lerna run start --parallel

lerna notice cli v3.22.1
lerna info Executing command in 2 packages: "npm run start"
@fed-exam/client: > @fed-exam/client@1.0.0 start C:\entry-level-exam_19\entry-level-exam\client
@fed-exam/client: > set CI=true && react-scripts start
@fed-exam/server: > @fed-exam/server@1.0.0 start C:\entry-level-exam_19\entry-level-exam\server
@fed-exam/server: > ts-node-dev index.ts
@fed-exam/server: [INFO] 21:51:34 ts-node-dev ver. 1.1.0 (using ts-node ver. 9.1.1, typescript    ver. 3.9.9)
@fed-exam/server: starting server { serverAPIPort: 3232, APIPath: '/api/tickets' }
@fed-exam/server: server running 3232
@fed-exam/client: i 「wds」: Project is running at http://192.168.0.108/
@fed-exam/client: i 「wds」: webpack output is served from 
@fed-exam/client: i 「wds」: Content not from webpack is served from C:\entry-level-exam_19\entry-level-exam\client\public
@fed-exam/client: i 「wds」: 404s will fallback to /
@fed-exam/client: Starting the development server...