2016-10-05 130 views
0

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

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

+1

我不认为存储过程会在这里工作,因为它不能像另一个查询中的表函数那样调用。如果您可以提供原始源代码和数据样本的具体示例,或许我们可以为您提供帮助。 – ScottMcG

+0

谢谢,这几乎是我需要知道的。现在放弃SP路径:) – Karnage

回答

0

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

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

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