参考其他 table 以检查日期范围内的记录

Reference other table to check records within date range

我正在处理一系列交易和库存收据。我的目标是创建一个标志,以查看是否在交易前最多 5 天公司是否收到了该项目的货物。伪逻辑如下:

For each transaction date: 
   For all inventory receipts whether inventory.item# = transaction.item#
       Are there records between transaction date - 5 and transaction date?

通常,我会创建两个 table 并加入它们,但它们实际上是两个独立的数据 structures.My 初始尝试:

PROC SQL;
   Create Table TABLE 1 AS 
         SELECT TRANSACTION.DATE, 
                SUM(CASE WHEN INVENTORY.DATE BETWEEN (TRANSACTION.DATE - 5 AND TRANSACTION.DATE) AND INVENTORY.ITEM = TRANSACTION.ITEM;

但是我如何引用 table 呢?我不确定 left/right/inner 联接在这里是否合适。我不是真的想加入 tables,是吗?

编辑: 我的数据结构如下:

TRANSACTION TABLE 

ITEM DATE
0012 12/2
0231 12/3
0421 12/3 

INVENTORY TABLE 

0012 11/30
0231 12/4
0421 12/1

对于项目 0012,我们会查看库存 table 并发现该项目在 11 月 30 日有收据,因此标志 = 1。对于项目 0231,我们看到交易后五天内没有库存配方,所以flag = 0。

标准 SQL 查询适用于我,不确定为什么您认为标准连接不起作用。鉴于您布置的结构,它可以工作,并且可以使用您的示例数据。如果您有重复的日期和项目,我不确定它是如何工作的,但您没有将其包含在您的问题中,我必须假设您的样本数据反映了您的实际情况。

假设,Table 名字是 t1 和 t2:

proc sql;
create table want as
select t1.*, t2.date as date2, 
    case when not missing(t2.date)  then 1 
            else 0 
     end as check_flag
from t1 as t1
left join t2 as t2
    on t1.item=t2.item
    and t2.date between t1.date-5 and t1.date;
quit;