交叉连接可以是很难,因为它们涉及的方式,通常是直观的数据来工作。下面是我会怎么做它,而不是,用简单的,默认情况下,INNER JOIN
:
WITH day1_info AS
(SELECT sub1, sub2
FROM mytable)
SELECT
day2_info.sub1 - day1_info.sub1 AS sub1_difference,
day2_info.sub2 - day1_info.sub2 AS sub2_difference,
FROM
mytable AS day2_info JOIN day1_info
ON day1_info.date = '2014-11-07'
AND day2_info.date = '2014-11-08'
如果你想多套日期做到这一点,你可以做到这一点。只需稍微更改JOIN
声明即可。 (请注意,在这种情况下,您可能还需要SELECT
其中一个日期,以便您知道每个结果适用于哪个时间段。)
WITH day1_info AS
(SELECT sub1, sub2
FROM mytable)
SELECT
day2_info.date,
day2_info.sub1 - day1_info.sub1 AS sub1_difference,
day2_info.sub2 - day1_info.sub2 AS sub2_difference,
FROM
mytable AS day2_info JOIN day1_info
ON (day1_info.date::timestamp + '1 day') = day2_info.date::timestamp