首页 > 解决方案 > 将 2 个 SQL 日期范围的结果输出到一个输出中

问题描述

我一直在努力解决这个问题,现在可能想多了,所以希望你能帮助我。

我有一个销售交易表。在其中,是每笔交易的日期列表,我想按帐户代码查看并并排放置,但要使用日期范围比较帐户 2019 年的支出与其 2020 年的支出

到目前为止,我只能得到其中一个,而不能两者兼得。

我查看了嵌套选择、联合以及更多我无法回忆的内容,但我没有得到任何结果。

我已经接近了,我想用这段代码:

SELECT inv_account, 
    (SELECT SUM(basevalue)) from salestrans WHERE inv_invoicedate BETWEEN '2019-04-01' AND '2020-03-31'), 
    (SELECT SUM(basevalue)from salestrans WHERE inv_invoicedate BETWEEN '2020-04-01' AND '2021-03-31') 
FROM salestrans
GROUP BY inv_account

这是给我每个帐户的总数,而不是个人帐户。现在我需要按个人帐户对其进行过滤,我假设该帐户位于括号中的 SELECT 中,但不确定如何执行此操作。

标签: sqlgroup-bysumcasebetween

解决方案


使用条件聚合:

SELECT inv_account, 
       SUM(CASE WHEN inv_invoicedate BETWEEN '2019-04-01' AND '2020-03-31' THEN basevalue ELSE 0 END) total1, 
       SUM(CASE WHEN inv_invoicedate BETWEEN '2020-04-01' AND '2021-03-31' THEN basevalue ELSE 0 END) total2
FROM salestrans
GROUP BY inv_account

推荐阅读