首页 > 解决方案 > SQL 按详细信息和月份聚合事务

问题描述

我正在尝试汇总某些项目的总量。例如,我想获取 trx_desc 为“Amazon”并且在 8 月份的所有交易的总金额。

这是我用来尝试输出这些数据的查询:

select det_trx_type, SUM(amount) as 'Total Amt',
CASE
    when MONTH(posting_date) = 8 THEN 'August'
    when MONTH(posting_date) = 9 THEN 'September'
    when MONTH(posting_date) = 10 THEN 'October'
END
as 'Month'

from av_finance 
where det_trx_type IN(
select distinct det_trx_type from av_finance)
group by  posting_date, det_trx_type

来自查询的数据

我希望 8 月份的亚马逊购买总数显示在 1 行,而不是在给定月份的每次购买中显示多行。

标签: sqlsql-server

解决方案


您可以尝试让CASE WHEN分组而不是仅posting_date列,因为posting_date它似乎是日期数据类型。

select det_trx_type, SUM(amount) as 'Total Amt',
CASE
    when MONTH(posting_date) = 8 THEN 'August'
    when MONTH(posting_date) = 9 THEN 'September'
    when MONTH(posting_date) = 10 THEN 'October'
END as 'Month'
from av_finance 
where det_trx_type IN(select distinct det_trx_type from av_finance)
group by  
CASE
    when MONTH(posting_date) = 8 THEN 'August'
    when MONTH(posting_date) = 9 THEN 'September'
    when MONTH(posting_date) = 10 THEN 'October'
END, det_trx_type

推荐阅读