如何在DB2中向此SQL语句添加值?

时间:2019-04-04 13:26:39

标签: sql db2

在子查询选择RPCODE的情况下,我需要添加“ P06”。我仍在学习SQL,因此我仍然不是子查询的专家,因此我不确定如何在语句中添加值。

我的第一个解决方案是在'P01'之后添加OR'P06',但这似乎不正确。

               CASE WHEN (SELECT RPCODE FROM AGQA.QAB2010
                 WHERE  INDATE || INTIME = ( SELECT MAX(INDATE||INTIME) FROM AGQA.QAB2010 WHERE RTAG  IN (SELECT TAG FROM TAGDATA) )
                  AND RTAG  IN (SELECT TAG FROM TAGDATA) ORDER BY RPDATE DESC, SER DESC FETCH FIRST 1 ROW ONLY) = 'P01'  THEN  'N' ELSE 'C' END
        ELSE 'R' END, 'S' )  AS TTYPE

现在,当RPCODE为'P01'时,TTYPE显示为'N'。我需要添加“ P06”,以便RPCODE“ P06”的TTYPE也显示为“ N”

1 个答案:

答案 0 :(得分:1)

罗布·威尔逊(Rob Wilson)评论...

  

= 'P01'更改为IN ('P01', 'P06')

但是,尽管该语句可能对您有用,但任何大小的数据集的性能都可能会降低。

子选择的数量和fetch first row是我的危险信号。

以在Db2 for i上进行RPG开发为背景,该语句看起来就像是我从曾经使用数据1条记录而不是处理数据集的RPG程序员那里看到的很多。

但是,在任何平台和任何背景下的开发人员中,都可以在SQL中看到相同的“行排成行”(RBAR,由SqlServerCentral.com的Jeff Moden创造)。

不幸的是,对于非平凡的语句,迁移到设置的基本过程并不是快速解决方案。需要完整的声明以及有关数据和表设计的详细信息。