我要做的是,如果字段为空,请在定义结果字段中使用WRKQRY
(查询/ 400)中的其他字段。这可能吗?
答案 0 :(得分:1)
您可以使用RUNSQLSTM
命令创建SQL视图,然后在视图上运行查询。
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
答案 1 :(得分:1)
Query / 400已过时,应该被视为已弃用。它在大约20年前被Query Management取代。 Query / 400查询在旧数据库优化器(CQE)下运行,并且无法受益于新优化器(SQE)采用的更快的更快优化技术。建议将Query / 400查询迁移到QM Query或DB2 Web Query。
幸运的是,查询管理查询可以在提示模式下创建,这对Query / 400用户来说应该是非常熟悉的。提示模式查询可以转换为更强大的SQL模式。
您可以使用RTVQMQRY
命令从您询问的Query / 400查询中生成SQL源。一旦获得源,您就可以使用@Mike提供的CASE ... END
表达式。使用CRTQMQRY
命令创建QM查询,并使用STRQMQRY
运行它。
答案 2 :(得分:1)
如果您仍然需要这样做,我可以告诉您如何在Query 400的3次传递中执行此操作。 是的,我知道效率不高但可以做到。
答案 3 :(得分:0)
在适用于您的CASE
CASE field
WHEN ' ' THEN newfield
ELSE field
END as myfield
处取得。{/ p>
{{1}}