SQL - 每列的条件

Val*_*spa 1 sql firebird where where-clause firebird2.1

这是一个常见的SQL问题,但是如果你必须知道数据库是Firebird的话.

我有这个表(简化):

user  amount  type
--------------------
john  25      credit
john  20      debit
john  5       debit
john  15      credit
mike  15      credit

我希望使用单个查询得到一个看起来像这样的结果:

user  credit  debit
--------------------
john  40      25
mike  15      NULL
Where credit = SUM(amount) WHERE type=credit
   and debit = SUM(amount) WHERE type=debit
Run Code Online (Sandbox Code Playgroud)

基本上我希望基于字段的SUM(在这种情况下是数量)在结果上有多个字段,但是在不同的条件下(在这种情况下是类型).

在此先感谢您的任何建议.

Dam*_*ver 6

标准SQL将是:

SELECT "user",
    SUM(CASE WHEN type='credit' then amount END) as Credit,
    SUM(CASE WHEN type='debit' then amount END) as Debit
FROM
    "table"
GROUP BY
    "user"
Run Code Online (Sandbox Code Playgroud)