我想编写一个查询(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
有可能吗?
答案 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
尝试一下,让我知道这是否有效。