我有一个表,其中的行看起来像这样
帐号 | 货币 | 金额 |
---|---|---|
1 | 美元 | 5 |
1 | 欧元 | 10 |
2 | 美元 | 8 |
3 | 欧元 | 4 |
有没有办法做一个选择查询,所以它会返回类似
帐号 | amount_usd | amount_eur |
---|---|---|
1 | 5 | 10 |
2 | 8 | |
3 | 4 |
usd 和 eur 是硬编码的,所以我不必从列中构建名称。
答案 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...