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