Sybase IQ—提取最近30天的数据,其中最近的日期不是今天



目标:从具有可变结束日期的表中提取最后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
)

相关内容

  • 没有找到相关文章

最新更新