私がやろうとしているのは、フィールドが空白の場合、WRKQRY
結果フィールドの定義で(Query / 400)内の別のフィールドを使用することです。これは可能ですか?
4 に答える
コマンドを使用して SQL ビューを作成し、RUNSQLSTM
そのビューに対してクエリを実行できます。
CREATE VIEW QTEMP/MYVIEW AS
SELECT F1, CASE WHEN F2 <> ' ' THEN F2 ELSE F3 END AS FX FROM MYLIB/MYFILE
次に、プログラムですべてを結び付けCL
ます。
PGM
DLTF FILE(QTEMP/MYVIEW)
MONMSG MSGID(CPF0000)
RUNSQLSTM SRCFILE(MYLIB/MYSRC) MBR(MYMBR)
RUNQRY QRY(MYLIB/MYQRY)
ENDPGM
Query/400 は廃止されており、非推奨と見なす必要があります。これは、約 20 年前にクエリ管理に置き換えられました。Query/400 照会は、古いデータベース・オプティマイザー (CQE) の下で実行され、新しいオプティマイザー (SQE) によって採用された新しいより高速な最適化手法の恩恵を受けることはできません。Query/400 クエリを QM Query または DB2 Web Query に移行することをお勧めします。
さいわい、Query 管理機能 Query は、Query/400 ユーザーにはなじみのあるプロンプト・モードで作成できます。プロンプト モードのクエリは、より強力な SQL モードに変換できます。
このRTVQMQRY
コマンドを使用して、質問した Query/400 クエリから SQL ソースを生成できます。ソースCASE ... END
を取得したら、@Mike によって指定された式を使用できます。CRTQMQRY
コマンドでQM クエリを作成し、 で実行しSTRQMQRY
ます。
それでもこれを行う必要がある場合は、クエリ 400 の 3 回のパスで行う方法をお見せします。ええ、それは効率的ではないことはわかっていますが、実行できます。
あなたのために働くはずですを見CASE
てください。
CASE field
WHEN ' ' THEN newfield
ELSE field
END as myfield