如果列名与关键字 sql 匹配,则对列求和
sum column if column name matches with keyword sql
我有来自 table 的记录,这些记录基于费用、收入和基于系统中每个月条目的交易日期。
我的查询工作正常,但我有一些方案可以扩展此查询。
我有一个名为 description
的列。我在查询中需要做的是,如果 description=='deposit'
那么它应该根据每个月的 description=='deposit'
对所有 amounts
求和。
示例:
我在 1 月存入 25000,然后在 2 月存入 3455,然后在 2 月再次存入 34566,依此类推每个月。
这是我的查询,但它没有过滤每个月:
SELECT
MONTH (transaction_date),
SUM(amount) AS total_amount,
(SELECT SUM(amount) as deposit FROM tbl_finanace WHERE description = 'Deposit'),
SUM(IF(amount < 0, amount, 0)) AS expenses,
SUM(IF(amount > 0, amount, 0)) AS earning,
transaction_date
FROM
`tbl_finanace`
WHERE
transaction_date LIKE '%2015%'
AND user_id = '15'
GROUP BY
MONTH (transaction_date)
ORDER BY
MONTH (transaction_date)
可以使用条件和进行如下计算
SUM(case when description = 'Deposit' then amount else 0 end) AS deposit
我有来自 table 的记录,这些记录基于费用、收入和基于系统中每个月条目的交易日期。
我的查询工作正常,但我有一些方案可以扩展此查询。
我有一个名为 description
的列。我在查询中需要做的是,如果 description=='deposit'
那么它应该根据每个月的 description=='deposit'
对所有 amounts
求和。
示例:
我在 1 月存入 25000,然后在 2 月存入 3455,然后在 2 月再次存入 34566,依此类推每个月。
这是我的查询,但它没有过滤每个月:
SELECT
MONTH (transaction_date),
SUM(amount) AS total_amount,
(SELECT SUM(amount) as deposit FROM tbl_finanace WHERE description = 'Deposit'),
SUM(IF(amount < 0, amount, 0)) AS expenses,
SUM(IF(amount > 0, amount, 0)) AS earning,
transaction_date
FROM
`tbl_finanace`
WHERE
transaction_date LIKE '%2015%'
AND user_id = '15'
GROUP BY
MONTH (transaction_date)
ORDER BY
MONTH (transaction_date)
可以使用条件和进行如下计算
SUM(case when description = 'Deposit' then amount else 0 end) AS deposit