我在Amazon Redshift上使用PostgreSQL。基於條件獲取行
我的表是:
drop table APP_Tax;
create temp table APP_Tax(APP_nm varchar(100),start timestamp,end1 timestamp);
insert into APP_Tax values('AFH','2018-01-26 00:39:51','2018-01-26 00:39:55'),
('AFH','2016-01-26 00:39:56','2016-01-26 00:40:01'),
('AFH','2016-01-26 00:40:05','2016-01-26 00:40:11'),
('AFH','2016-01-26 00:40:12','2016-01-26 00:40:15'), --row x
('AFH','2016-01-26 00:40:35','2016-01-26 00:41:34') --row y
預期輸出:
'AFH','2016-01-26 00:39:51','2016-01-26 00:40:15'
'AFH','2016-01-26 00:40:35','2016-01-26 00:41:34'
我不得不比較備用記錄之間start
和endtime
如果爲TimeDifference <10秒得到下一個記錄endtime
到最後或最終記錄。
I,e datediff(seconds,2018-01-26 00:39:55,2018-01-26 00:39:56) Is <10 seconds
我嘗試這樣做:
SELECT a.app_nm
,min(a.start)
,max(b.end1)
FROM APP_Tax a
INNER JOIN APP_Tax b
ON a.APP_nm = b.APP_nm
AND b.start > a.start
WHERE datediff(second, a.end1, b.start) < 10
GROUP BY 1
它的工作原理,但在條件失敗,則不返回row y
。
看起來像[在Redshift中編寫查詢(基於更新)](https://stackoverflow.com/questions/35941138/writing-a-query-in-redshift-based-on-update) –
您有2018年和2016年的混合日期。基於類似的問題,我已將它們設置爲2016年。 –