我遇到了一个看似简单的查询,但在最后几个小时无法让它工作。
我有一个表files
,其中包含文件名和一些值,例如此文件中的记录、创建日期 ( create_date
)、处理日期 ( processing_date
) 等。不同时间的创建日期可能有多个文件,并且它们可能不会在创建的同一天得到处理,实际上它们甚至可能需要三天或更长时间才能得到处理。
因此,假设我有这些行,例如:
create_date | processing_date
------------------------------
2012-09-10 11:10:55.0 | 2012-09-11 18:00:18.0
2012-09-10 15:20:18.0 | 2012-09-11 13:38:19.0
2012-09-10 19:30:48.0 | 2012-09-12 10:59:00.0
2012-09-11 08:19:11.0 | 2012-09-11 18:14:44.0
2012-09-11 22:31:42.0 | 2012-09-21 03:51:09.0
我想要在单个查询中将分组列截断到当天,并添加 11 个附加列来表示和create_date
之间的差异,因此结果大致如下所示:processing_date
create_date
create_date | diff0days | diff1days | diff2days | ... | diff10days
------------------------------------------------------------------------
2012-09-10 | 0 2 1 ... 0
2012-09-11 | 1 0 0 ... 1
等等,我希望你明白这一点:)
我已经尝试过了,到目前为止,它可以为 a 获取一个聚合列,create_date
其差异为 - 例如 - 3:
SELECT TRUNC(f.create_date, 'DD') as created, count(1) FROM files f WHERE TRUNC(f.process_date, 'DD') - trunc(f.create_date, 'DD') = 3 GROUP BY TRUNC(f.create_date, 'DD')
我尝试组合单个查询并尝试子查询,但这没有帮助,或者至少我对 SQL 的了解不够。
我需要的是一个提示,以便我可以将各种差异包含在列中,如上所示。我怎么可能做到这一点?