基本sql-添加同比收入数字

1sbrub3j  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(246)

因此,我对sql有点新,在单一表中连接多个查询时遇到了问题。
在我的公司里,我没有人可以谈论这个问题,我需要一些关于如何创建带有年度数字的表的基本建议。
我的基本脚本如下,我不知道如何连接2,这样我就可以显示2年的收入并排。

SELECT a.date_key, b.account_name,a.client_id,SUM(a.revenue) as "Revenue 2019" FROM spreadsheet as a
LEFT JOIN account_file as b on a.client_id = b.client_id
WHERE date_key >= 2019 and date_key < 2020. 
GROUP BY a.date_key, a.client_id, b.account_name

SELECT a.date_key, b.account_name,a.client_id,SUM(a.revenue) as "Revenue 2018" FROM spreadsheet as a
LEFT JOIN account_file as b on a.client_id = b.client_id
WHERE date_key >= 2018 and date_key < 2019. 
GROUP BY a.date_key, a.client_id, b.account_name

我见过这样的例子,但我不能完全把我的头围绕着它,可以用一只手。

41zrol4v

41zrol4v1#

您需要使用条件聚合,但不使用 datekeyGROUP BY 列如下:

SELECT a.account_name, s.client_id,
       SUM(CASE WHEN s.date_key >= 2019 AND s.date_key < 2020 
                THEN s.revenue 
            END) AS "Revenue 2019",
       SUM(CASE WHEN s.date_key >= 2018 AND s.date_key < 2019 
                THEN s.revenue 
           END) AS "Revenue 2018"
FROM spreadsheet AS s
LEFT JOIN account_file AS a 
    ON s.client_id = a.client_id
WHERE s.date_key >= 2018 AND s.date_key < 2020
GROUP BY a.account_name, s.client_id
qncylg1j

qncylg1j2#

考虑条件聚合,在其中移动 WHERE 条件 CASE 多列的语句。另外,请注意要改掉的坏习惯:使用表别名,如(a,b,c)或(t1,t2,t3)

SELECT a.account_name
       , s.client_id
       , SUM(CASE 
                  WHEN s.date_key >= 2019 AND s.date_key < 2020 
                  THEN s.revenue 
             END) AS "Revenue 2019"
       , SUM(CASE
                  WHEN s.date_key >= 2018 AND s.date_key < 2019 
                  THEN s.revenue 
             END) AS "Revenue 2018"
       ... 

FROM spreadsheet AS s
LEFT JOIN account_file AS a 
    ON s.client_id = a.client_id
GROUP BY a.account_name
         , s.client_id

相关问题