SQLからNetezzaにクエリを移行しようとしています。元々は私がストアドプロシージャとして複製したカスタム関数を含んでいますが、今は各行に適用しようとしています。カスタム関数は元のコードでCROSS APPLYを使用して呼び出されていました。Netezzaに相当するCROSSが適用されます
ストアドプロシージャは、3つの引数(適用されている行から2つ)を受け取り、1つの日付を返します。最終的なクエリ結果の列にデータを挿入するには、各行の日付が必要です。
SQLからNetezzaにクエリを移行しようとしています。元々は私がストアドプロシージャとして複製したカスタム関数を含んでいますが、今は各行に適用しようとしています。カスタム関数は元のコードでCROSS APPLYを使用して呼び出されていました。Netezzaに相当するCROSSが適用されます
ストアドプロシージャは、3つの引数(適用されている行から2つ)を受け取り、1つの日付を返します。最終的なクエリ結果の列にデータを挿入するには、各行の日付が必要です。
残念ながら、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