我正在尝试将查询从SQL迁移到Netezza。原始包含一个自定义函数,我已将其复制为存储过程,但现在我不得不尝试将其应用于每一行。在原始代码中使用CROSS APPLY调用自定义函数。
存储过程需要3个参数(两个来自它正在应用的行)并返回一个日期。我需要每行的日期来填充最终查询结果中的列。
答案 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')
)
您应该为所有客户返回“最新购买”的所有日期 - 可能在临时表中。然后,您可以将结果集加入“传入”记录中。