Netezza相当于CROSS APPLY

时间:2016-10-05 04:36:15

标签: netezza cross-apply

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

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

2 个答案:

答案 0 :(得分:0)

不幸的是,Netezza不支持CROSS APPLY或OUTER APPLY(相关子查询)。也许你可以找到一种解决问题的方法而不使用它们?

答案 1 :(得分:0)

我想你需要稍微改变你的'编码风格'才能使这项工作成功,但我希望它的表现要比你想象的要好。

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

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')
)

您应该为所有客户返回“最新购买”的所有日期 - 可能在临时表中。然后,您可以将结果集加入“传入”记录中。