使用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
  1. 我需要基于每个ID的代码值“ A51”的ORDERDATE和ISSUETIME创建ORDERDATE2,ISSUETIME2和QTY2变量。

  2. 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

  1. 如果没有ORDERDATE的条目,则应捕获到ISSUEDATE的最新条目 在上面的示例中-ID 102的ORDERDATE为'2020-08-21',但是'2020-08-21'没有ISSUEDATE行,因此最接近该日期的是('2020-08-20',08:30 :00和125)捕获。

我是Teradata Qualify语句的新手,我所做的就是为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,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的行-我希望没有我创建两个数据集并将它们联接起来的方法应该很简单。

非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...