我正在嘗試將查詢從SQL遷移到Netezza。原始包含一個自定義函數,我已將其作爲存儲過程進行了複製,但現在我被卡住,試圖將其應用到每行。自定義函數在原始代碼中使用CROSS APPLY進行調用。Netezza相當於CROSS APPLY
存儲過程需要3個參數(兩個來自正在應用的行)並返回單個日期。我需要每個行的日期來填充最終查詢結果中的列。
我正在嘗試將查詢從SQL遷移到Netezza。原始包含一個自定義函數,我已將其作爲存儲過程進行了複製,但現在我被卡住,試圖將其應用到每行。自定義函數在原始代碼中使用CROSS APPLY進行調用。Netezza相當於CROSS APPLY
存儲過程需要3個參數(兩個來自正在應用的行)並返回單個日期。我需要每個行的日期來填充最終查詢結果中的列。
不幸的是Netezza不支持CROSS APPLY或OUTER APPLY(相關子查詢)。也許你可以找到一種方法來解決這個問題,而不使用這些?
我想你需要稍微改變一下你的'編碼風格'來完成這個工作,但是我期望的性能會比你想象的要好。
如果您最初的功能是類似的信息(僞代碼)
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')
)
你應該返回所有的「最新採購」的日期爲所有的客戶 - 也許在一個臨時表。然後,您可以將結果集加入您的「傳入」記錄中。
我不認爲存儲過程會在這裏工作,因爲它不能像另一個查詢中的表函數那樣調用。如果您可以提供原始源代碼和數據樣本的具體示例,或許我們可以爲您提供幫助。 – ScottMcG
謝謝,這幾乎是我需要知道的。現在放棄SP路徑:) – Karnage