SQL QUERY,获取两个时间段之间的差异

时间:2018-02-26 13:28:32

标签: sql

我想编写一个查询(SQL)来生成两个时间段(P)之间的比较报告并生成这样一个表。下面是所需的结果。

Country  P1(Jan/01 to Jan/07)    P2 (Feb/02 to Feb/09)  Difference(P2 - P1)
Kenya        3                               7                    4
Uganda       5                               2                   -3
Tanzania     4                               1                   -3
Burundi      6                               5                   -1
Rwanda       4                               6                    2
Total       22      

数据库上的数据显示为特定日期的单个记录。

e.g。

Report ID      Report Desc    Country   Report Date
001             Traffic         KE      January 1, 2017
002             Court           TZ      January 5, 2017
003             Traffic         KE      February 6, 2017
004             Land            UG      January 21, 2017
005             Building        BRD     January 22, 2017
006             Traffic         RWA     February 7, 2017

有可能吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想知道每个国家有多少行属于两个时间段P1(1月1日至7日)和P2(2月2日至9日)。如果这是正确的,您可以使用嵌套在CASE中的COUNT语句。类似的东西:

SELECT 
  Country, 
  P1, 
  P2, 
  P2 - P1 AS Difference
FROM (
  SELECT 
    Country,
    SUM(
      CASE WHEN "Report Date" BETWEEN DATE '2018-01-01' AND DATE '2018-01-07' THEN 1 ELSE 0 END
    ) AS P1,
    SUM(
      CASE WHEN "Report Date" BETWEEN DATE '2018-02-02' AND DATE '2018-02-09' THEN 1 ELSE 0 END
    ) AS P2
  FROM MyTable
  GROUP BY Country
) src

尝试一下,让我知道这是否有效。