sql - 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
移入即可。在下面的代码中,我假设DATE_DIM
主 FROM 子句中的别名是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
)
推荐阅读
- javascript - 使用 @solana/web3.js 将元数据添加到 Solana 令牌
- python - NLTK 标记特定单词
- arrays - API GET 响应格式问题
- python - 临时文件的意外删除
- python - 训练 nltk.chunk.ne_chunk 的语料库
- javascript - 页面自行变回
- reactjs - 使用 iis 服务时反应的嵌套路由
- matrix - 我可以在 Julia 中使用迭代将多个函数放入一个矩阵中吗?
- react-native - Firestore (9.1.3):连接 WebChannel 传输错误/在 Web 浏览器上工作,但不能在设备移动设备上工作 (IOS/Android)
- r - 在R中的CSV文件中搜索100万行中存在20个单词的组