Mysql sum列根据另一列

这是我的Mysql表中的表数据

t_Id  t_Type  t_Date      t_acd_Id  t_acc_Id  t_Amount  t_Desc  t_u_Id    c_Id  
------  ------  ----------  --------  --------  --------  ------  ------  --------
     1       0  2016-01-26       266        29  400.00                 1         1
     2       0  2016-01-27       266        29  160.00                 1         1
     3       1  2016-01-28        29       266  83.30                  1         1
     4       2  2016-01-27        29       272  400.00                 1         1
     5       0  2016-01-27       266       272  300.00                 1         1
     6       1  2016-01-28       272        22  20.00                  1         1

我想要我的结果

     accout_Id  rec_Amount  pay_Amount 
        ------  ----------  ----------  
            29      483.30      560.00 

其中rec_Amount是t_acd_Id的总和,pay_Amount是t_acc_Id的总和

如何得到这个结果?

我目前的查询
选择
(SELECT SUM(t_Amount)FROM tbl_transactions WHEREt_acd_Id = 29)AS rec_Amount,
(SELECT SUM(t_Amount)FROM tbl_transactions WHEREt_acc_Id = 29)AS pay_Amount
FROM tbl_transactions

它给出了多行

最佳答案 此查询仅满足上述要求(对于单个帐户).如果您想获得所有帐户的结果,则需要按帐户对记录进行分组.

试试这个(这是根据你的要求):

SELECT CASE 
         WHEN t_acc_id = 29 THEN t_acc_id 
         WHEN t_acd_id = 29 THEN t_acd_id 
       END      account_id, 
       Sum(CASE 
             WHEN t_acd_id = 29 THEN t_amount 
             ELSE 0 
           END) rec_Amount, 
       Sum(CASE 
             WHEN t_acc_id = 29 THEN t_amount 
             ELSE 0 
           END) pay_Amount 
FROM   tbl_transactions 
WHERE  t_acc_id = 29 
        OR t_acd_id = 29 
点赞