目标:从具有可变结束日期的表中提取最后30天的数据
背景:我有一个包含购买信息的表,但该表每两周更新一次,因此数据滞后。有一天它可能落后14天,而另一天可能落后13或15天。
我的表包含一个DATE_KEY列,该列联接到此键上的DATE_DIM表,我从该键提取日期字段。我会使用GETDATE或CURRENT_DATE,但由于滞后,这在我的情况下不合适。
我使用的是Sybase IQ,我认为我不能在where子句中使用select语句来比较日期,我得到了以下错误:
Feature, scalar value subquery (at line 63) outside of a top level SELECT list, is not supported.
这就是我试图做的
WHERE
TIME.[DAY] >= DATEADD(dd,-30,( SELECT
MAX([TIME1].[DAY])
FROM DB.DATE_DIM TIME1
JOIN DB.PURCHASES PURC
ON TIME1.KEY = PURC.KEY))
在上述限制条件下,我如何提取最近30天的数据?
根据Sybase IQ文档,您可以使用与子查询的比较,因此您可以将DATE_DIM
的联接添加到主FROM子句中,然后将其与类似于您的子查询进行比较,只需将DATEADD
移到其中即可。在下面的代码中,我假设主FROM语句中DATE_DIM
的别名为TIME0
。
WHERE
TIME0.[DAY] >= (SELECT DATEADD(dd,-30, MAX([TIME1].[DAY]))
FROM DB.DATE_DIM TIME1
JOIN DB.PURCHASES PURC
ON TIME1.KEY = PURC.KEY
)