表:会计
date_due date_paid amount_due amount_paid category_type
2012-08-12 2012-08-12 500 450 Income
2012-08-13 2012-08-17 200 300 Expense
2012-09-15 2012-09-13 300 300 Income
2012-09-17 2012-09-16 100 100 Income
如何生成表格,如:
date_paid IncomeAmountPaid ExpenseAmountPaid
2012-08 TOTAL INCOME IN AUGUST TOTAL EXPENSE IN AUGUST
2012-09 TOTAL INCOME IN SEPT. TOTAL EXPENSE IN SEPTEMBER
答案 0 :(得分:5)
您可以使用以下内容实现CASE
语句和GROUP BY
:
select date_format(date_paid, '%Y-%m') date_paid,
sum(case when category_type = 'Income' then amount_paid end) IncomePaid,
sum(case when category_type = 'Expense' then amount_paid end) ExpensePaid
from accounting
group by date_format(date_paid, '%Y-%m')
答案 1 :(得分:0)
如何分组
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
如何汇总
SELECT SUM(column_name) FROM table_name
如何SPLIT
创建拆分功能
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
然后使用函数
SELECT SPLIT_STR(string, delimiter, position)
答案 2 :(得分:0)
select Year(date_paid), Month(date_paid),
sum(case when category_type = 'Income' then amount_paid end) IncomeAmountPaid,
sum(case when category_type = 'Expense' then amount_paid end) ExpenseAmountPaid
group by Year(date_paid), Month(date_paid)