如果为空,则定义结果字段,然后定

时间:2012-05-16 13:24:29

标签: db2 ibm-midrange

我要做的是,如果字段为空,请在定义结果字段中使用WRKQRY(查询/ 400)中的其他字段。这可能吗?

4 个答案:

答案 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}}