join - 在 Teradata 中使用资格和日期条件连接数据
问题描述
我对包含超过 50MM 记录的数据集有一个数据请求,以根据日期和时间戳添加一些数据字段
Dataset that I have
ID CODE ISSUEDATE ISSUETIME ORDERDATE ORDERTIME QTY
101 A51 2020-08-24 11:24:00 2020-08-21 09:25:00 100
101 777 2020-08-21 08:30:00 2020-08-21 08:30:00 125
101 888 2020-08-21 09:30:00 2020-08-21 09:30:00 145
102 A51 2020-08-23 11:24:00 2020-08-21 09:25:00 100
102 256 2020-08-20 08:30:00 2020-08-20 08:30:00 125
102 256 2020-08-20 11:24:00 2020-08-20 11:24:00 145
我需要提取 CODE='A51' 的数据
I want the following Dataset
ID CODE ISSUEDATE ISSUETIME ORDERDATE QTY ISSUEDATE2 ISSUUTIME2 QTY2
101 A51 2020-08-24 11:24:00 2020-08-21 100 2020-08-21 08:30:00 125
102 A51 2020-08-23 11:24:00 2020-08-21 100 2020-08-20 08:30:00 125
我需要根据每个 ID 的代码值“A51”的 ORDERDATE 和 ISSUETIME 创建 ORDERDATE2、ISSUETIME2 和 QTY2 变量。
ORDERDATE2 和 ORDERTIME2 将查找 ORDERDATE 和 ORDERTIME 并从非“A51”行中提取最接近的 ISSUEDATE 和 ISSUETIME 以及 QTY 详细信息
在上面的示例中 - ID 101 的 ORDERDATE 为 '2020-08-21' 和 ORDERTIME 为 09:25 - 因此,此 ID 在 2020-08-21 上最近的非'A51' 记录是 08:30:00,数量为 125
- 如果没有 ORDERDATE 条目,则应捕获最近的 ISSUEDATE 在上面的示例中 - ID 102 的 ORDERDATE 为“2020-08-21”,但没有“2020-08-21”的 ISSUEDATE 行,因此最接近到这个日期是('2020-08-20'、08:30:00 和 125)捕获的。
我是 TeradataQualify
语句的新手,我所做的只是为 A51 而不是 A51 创建单独的数据集,并在 ID 和时间上加入它们
Create table _A51_ as Select ID, ISSUEDATE, ISSUETIME, ORDERDATE, ORDERTIME, QTY from
Have where CODE='A51'
Create table _Non_A51_ as Select ID, ISSUEDATE, ISSUETIME, ORDERDATE, ORDERTIME, QTY from
Have where CODE ne 'A51'
Create table _A51B_ as Select
A.*,B.ISSUEDATE as ISSUEDATE2, B.ISSUETIME as ISSUETIME2
from _A51_ as A
inner join _Non_A51_ as B
where A.ID=B.ID and
A.ORDERDATE=B.ISSUEDATE
and A.ORDERTIME le B.ISSUETIME
QUALIFY ROW_NUMBER() OVER (PARTITION BY A.ID, A.ISSUEDATE ORDER BY B.ISSUETIME)=1
这不会给我 ID 102 的行 - 我希望应该有一种简单的方法,而无需我创建两个数据集并将它们重新连接起来。
非常感谢这里的任何帮助。
解决方案
推荐阅读
- java - 如何在java项目中设置maven本地repo
- python - 如何在 Python 2.7 上使用没有控制台的子进程不断监听外部程序的输出
- javascript - 将 React 原生组件导出为 AAR android 库
- pdf - 通过google-apps-script将goole文档转换为pdf时如何摆脱不需要的额外页面?
- java - 使用提供的一组键和默认值创建 Map
- javascript - 没有为简单图表定义画布
- reactjs - 如何在高阶组件的 const 变量中声明通用 React 组件?
- excel - 有什么办法可以排除行中的空白单元格
- drupal-8 - 如何在 drupal8 中加载用户及其自定义字段,如图片、标题?
- java - 是否可以在 Android 应用中下载或打印通知历史记录?