Netezza 等同于 CROSS APPLY

Netezza Equivalent of CROSS APPLY

我正在尝试将查询从 SQL 迁移到 Netezza。原件包含一个自定义函数,我已将其复制为存储过程,但现在我无法尝试将其应用于每一行。在原始代码中使用 CROSS APPLY 调用自定义函数。

存储过程有 3 个参数(两个来自正在应用的行)和 returns 一个日期。我需要每一行的日期来填充最终查询结果中的一列。

很遗憾,Netezza 不支持 CROSS APPLY 或 OUTER APPLY(相关子查询)。也许你可以找到一种不用这些就可以解决问题的方法?

我想您需要稍微更改 'coding style' 才能完成这项工作,但我希望性能会比您预期的更好。

如果您的原始函数类似于(伪代码)

LatestPurchase(custumerID,channel)
(
Select max(order_date) 
from ordersq O
where customerID = O.CustID
And O.payment_date is not null 
And (O.salesChannel=Channel or Channel is null or Channel = 'ANY')
)

您应该 return 所有客户 'latest purchase' 的所有日期 - 也许是临时的 table。然后您可以将该结果集加入到您的 'incoming' 记录中。