Sybase IQ - 提取最近日期不是今天的最近 30 天的数据
Sybase IQ - Pull the last 30 days of data where the most recent date is not today
Objective:从具有可变结束日期
的 table 中提取最近 30 天的数据
背景:我有一个包含购买信息的table,但是这个table每两周才更新一次,因此数据存在滞后。有的时候可能会晚 14 天,有的可能会晚 13 或 15 天。
我的 table 包含一个 DATE_KEY 列,该列连接到此键上的 DATE_DIM table,这是我从中提取日期字段的地方。我会使用 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 documentation,您可以使用与子查询的比较,因此您可以将连接添加到 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
)
Objective:从具有可变结束日期
的 table 中提取最近 30 天的数据背景:我有一个包含购买信息的table,但是这个table每两周才更新一次,因此数据存在滞后。有的时候可能会晚 14 天,有的可能会晚 13 或 15 天。
我的 table 包含一个 DATE_KEY 列,该列连接到此键上的 DATE_DIM table,这是我从中提取日期字段的地方。我会使用 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 documentation,您可以使用与子查询的比较,因此您可以将连接添加到 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
)