2015-11-25 4 views
0

Я пытаюсь отобразить результаты таблицы платежей, содержащей сумму определенных столбцов за день;mysql сводная таблица по дате

payment id | payment_actual_timestamp | payment type | amount 
1   | 2015-11-23 13:01:20  | AUTH   | 0.16 
2   | 2015-11-23 13:07:20  | AUTH   | 23.65 
3   | 2015-11-24 08:07:20  | VOID   | 19.24 
4   | 2015-11-24 13:45:20  | AUTH   | 0.65 
5   | 2015-11-24 16:34:10  | REFUND  | 1.20 
6   | 2015-11-25 13:07:20  | SETTLE  | 4.40 

Что я хотел бы показать следующее:

Date  | SETTLE | AUTH | VOID | REFUND 
2015-11-23 | 0.00 | 23.81| 0.00 | 0.00 
2015-11-24 | 0.00 | 0.65 | 19.24| 1.20 
2015-11-25 | 4.40 | 0.00 | 0.00 | 0.00 

есть ли способ сделать это?

Большое спасибо.

+1

http://stackoverflow.com/questions/14805851/mysql-sum-column-values-based-on-row-from-the -same-table – Standej

+1

, пожалуйста, покажите нам, что вы пробовали, и что вы получите – rkyr

+0

Возможно, вы захотите прочитать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), который усиливает вероятность получения полезного ответа _drastically_. Вы можете найти превосходный эссе [ESR] (https://en.m.wikipedia.org/wiki/Eric_S._Raymond) [Как задавать вопросы Smart Way] (http://catb.org/~esr/ faqs/smart-questions.html) тоже полезно. –

ответ

1

Одним из вариантов является использование conditional aggregation с sum и case:

select date(payment_actual_timestamp), 
    sum(case when payment_type = 'SETTLE' then amount end) settleamt, 
    sum(case when payment_type = 'AUTH' then amount end) authamt, 
    sum(case when payment_type = 'VOID' then amount end) voidamt, 
    sum(case when payment_type = 'REFUND' then amount end) refundamt 
from yourtable 
group by date(payment_actual_timestamp) 
Смежные вопросы