Sql 我需要在两个不同的栏中计算到日期之间每个DEP的销售额和数量

Sql 我需要在两个不同的栏中计算到日期之间每个DEP的销售额和数量,sql,Sql,我需要对每个部门的销售额和数量进行合计 日期介于(2018年7月1日至2019年6月30日)之间的列(18) 日期介于(2019年7月1日至2020年6月30日)另一列(19) 您可以使用条件聚合: Dep Sales 18 Sales 19 Qty 18 Qty 19 0103 13,618 13,618 459 459 0325 237 237 13 13 0318

我需要对每个部门的销售额和数量进行合计 日期介于(2018年7月1日至2019年6月30日)之间的列(18) 日期介于(2019年7月1日至2020年6月30日)另一列(19)


您可以使用条件聚合:

Dep     Sales 18    Sales 19    Qty 18    Qty 19
0103    13,618       13,618       459      459
0325    237           237         13       13
0318    2,121        2,121        39       39
0105    19,886      19,886      1,586     1,586
选择dep,
合计(日期>='2018-01-01'和日期<'2019-01-01'时的情况,然后为销售0结束)作为2018年的销售额,
合计(日期>='2019-01-01'和日期<'2020-01-01'时的情况,然后销售0结束)作为2019年的销售额,
合计(当日期>='2018-01-01'和日期<'2019-01-01'时,则数量0结束)作为2018年的数量,
合计(当日期>='2019-01-01'和日期<'2020-01-01'时,则数量0结束)作为2019年数量
从t
按dep分组;

众所周知,日期操作依赖于数据库。无论您使用的是什么数据库,都应该可以使用这种方法。

用您使用的数据库标记您的问题。谢谢您的帮助,我收到了
Dep     Sales 18    Sales 19    Qty 18    Qty 19
0103    13,618       13,618       459      459
0325    237           237         13       13
0318    2,121        2,121        39       39
0105    19,886      19,886      1,586     1,586
select dep,
       sum(case when date >= '2018-01-01' and date < '2019-01-01' then sales else 0 end) as sales_2018,
       sum(case when date >= '2019-01-01' and date < '2020-01-01' then sales else 0 end) as sales_2019,
       sum(case when date >= '2018-01-01' and date < '2019-01-01' then qty else 0 end) as qty_2018,
       sum(case when date >= '2019-01-01' and date < '2020-01-01' then qty else 0 end) as qty_2019
from t
group by dep;