2016-10-05 40 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') 
) 

你應該返回所有的「最新採購」的日期爲所有的客戶 - 也許在一個臨時表。然後,您可以將結果集加入您的「傳入」記錄中。