在我的表格中显示商店的付款详情。这里的付款是通过使用信用卡,借记卡和现金来完成的。这将在表格中表示为字段"模式" 如果mode = 1 cash,mode = 2 credit and mode = 3 debit。
现在我使用此查询获取每日费用详情
SELECT * FROM (`fee_data`) WHERE `paid_date` = '2015-20-11'
我希望得到不同模式的付费金额总和
我该怎么做..
答案 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模式
我认为这应该有用