私は、IBM U2 Rocket データベースの SQL に取り組んでいます。これは、私がよく知っている db プラットフォームのフレーバーではありません。
このデータベースに直接アクセスすることはできません。呼び出し元のコードでステートメントを作成し、そこからテストすることによってのみアクセスできます。そのため、構文エラーが発生したときに問題がどこにあるのかを特定するのが少し厄介になります。
派生列に条件付きのクエリを作成しようとしています。データベースについて読んだことからわかる限り、これはうまくいくはずです:
SELECT a.*
FROM (
SELECT dp.NAME
,dp.Code
,dp.BusinessType + ts.BusinessType AS bType
FROM dataPoints dp
LEFT OUTER JOIN trialSuppliers ts
WHERE ts.AccountStatus = 'A'
) a
WHERE a.bType LIKE '%cho%'
ただし、次のエラーがスローされます。
UCI::SQLExecDirect() で SQLSTATE 37000 で停止、ネイティブ エラー:0 [IBM][SQL Client][UNIDATA]
内部クエリを実行するだけで問題なく動作します。任意の種類の内部選択ステートメントを使用しようとすると、同じエラーがスローされます。つまり、次のようになります。
SELECT *
FROM (
SELECT dp.NAME
,dp.Code
,dp.BusinessType + ts.BusinessType AS bType
FROM dataPoints dp
LEFT OUTER JOIN trialSuppliers ts
WHERE ts.AccountStatus = 'A'
)
それでも失敗します。
派生列でクエリをフィルタリングできる正しい構文は何ですか?