使用不同情况的多行总和

时间:2016-01-19 08:46:46

标签: mysql

在我的表格中显示商店的付款详情。这里的付款是通过使用信用卡,借记卡和现金来完成的。这将在表格中表示为字段"模式" 如果mode = 1 cash,mode = 2 credit and mode = 3 debit。

现在我使用此查询获取每日费用详情

 SELECT * FROM (`fee_data`) WHERE `paid_date` =  '2015-20-11' 

我希望得到不同模式的付费金额总和

我该怎么做..

4 个答案:

答案 0 :(得分:2)

你可以试试这个:

SET @paid_date = '2015-01-19 00:00:00';

SELECT 
SUM (CASE WHEN MODE = 1 THEN VALUE_PAYMENT ELSE 0 END) TOTAL_1,
SUM (CASE WHEN MODE = 2 THEN VALUE_PAYMENT ELSE 0 END) TOTAL_2,
SUM (CASE WHEN MODE = 3 THEN VALUE_PAYMENT ELSE 0 END) TOTAL_3
FROM (`fee_data`) WHERE `paid_date` =  @paid_date; 

其中value_payment是您存储已支付金额的列。

答案 1 :(得分:2)

你可以使用sum(如果(与日期分组相结合,如下所示:

SELECT `paid_date`, sum(if(mode=1, `fee_data`, 0)) sumMode1,
sum(if(mode=2, `fee_data`, 0)) sumMode2,
sum(if(mode=2, `fee_data`, 0)) sumMode3
FROM (`fee_data`) group by `paid_date`

通过它,您将获得每行日期一行,其中您有3个聚合列。对于每种模式,您都有一个聚合字段。那是你在找什么?

答案 2 :(得分:0)

试试这个:

SELECT * FROM (`fee_data`) WHERE `paid_date` =  '2015-20-11' AND ModeID=1

相应地更改数据库表

答案 3 :(得分:0)

SELECT *,SUM(paid_amount)as sum_amount FROM(fee_data)WHERE paid_date =' 2015-20-11' GROUP BY模式

我认为这应该有用