SQL-每列的条件。

这是一个通用的SQL问题,但是我是否必须知道数据库是Firebird。 我有这张桌子(简体): 用户金额类型 -------------------- 约翰25积分 约翰20笔付款 约翰5借记 约翰15积分 迈克15点数 我希望使用单个查询获得如下所示的结果: 用户信用借记 -------------------- 约翰40 25 迈克15空
Where credit = SUM(amount) WHERE type=credit
   and debit = SUM(amount) WHERE type=debit
基本上,我想基于一个字段的总和(在这种情况下为数量),但基于不同的条件(在这种情况下为类型),在结果上具有多个字段。 在此先感谢您的任何建议。     
已邀请:
标准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\"
    
我不确定Firebird的工作方式,但是您可以执行以下操作:
SELECT user, 
sum(SELECT amount FROM table AS t2 WHERE t2.user = t1.user AND type=\"credit\" ) AS credit, 
sum(SELECT amount FROM table AS t3 WHERE t3.user = t1.user AND type=\"debit\" ) AS debit
FROM table AS t1
GROUP BY user
ORDER BY user
我参考的是PostgreSQL中可能会出现的情况,以帮助您找到所需的内容。     
尝试这个 :
SELECT credit.user_name, credit.cre, debit.deb
  FROM (SELECT user_name, SUM(amount) cre FROM t WHERE TYPE = \'credit\' GROUP BY user_name) credit
  LEFT OUTER JOIN (SELECT user_name, SUM(amount) deb
                     FROM t
                    WHERE TYPE = \'debit\'
                    GROUP BY user_name) debit
    ON (credit.user_name = debit.user_name)
    

要回复问题请先登录注册