select和内部join中的DB2SQLIf语句



我有一个简单的查询。我正在做一个简单的选择(见下文(。现在它工作了,我想对另一个表进行内部联接,并在内部执行if语句。我一直在网上搜索,找不到我要找的东西。

我基本上想加入项目主表,如果它是类型"E",就做其他事情。

有人能给我指正确的方向吗?

EXEC SQL Declare RSCURSOR cursor for
SELECT A.*, B.*
FROM HPO A
INNER JOIN IIML01 B on A.PPROD = B.IPROD
IF B.IITYP <> 'E';
PCMT = B.IDESC;
ELSE;
PCMT = A.PCMT ;
WHERE PORD = :PON AND PLINE = :LIN;
EXEC SQL  Open RSCURSOR;
EXEC SQL SET RESULT SETS Cursor RSCURSOR;
IF SQLSTATE = '00000';
RSL = '00';
ELSEIF SQLSTATE = '02000';
RSL = '10';
ELSE;
RSL = '20';
ENDIF;    

这就是我在RPG中修复的:

C     PPROD         CHAIN     IPI100IM                           99
C     *IN99         IFEQ      '0'
C
C     IITYP         IFNE      'E'
C                   EVAL      RS(CNT).PCMT = IDESC                         
C                   ELSE
C                   EVAL      RS(CNT).PCMT = PCMT                          
C                   ENDIF              

不完全清楚,但我认为你想要这个:

SELECT A.*, B.*
FROM HPO A
INNER JOIN IIML01 B on A.PPROD = B.IPROD 
AND CASE WHEN B.IITYP <> 'E' THEN B.IDESC ELSE A.PCMT END = PCMT
WHERE PORD = :PON AND PLINE = :LIN;

根据您想要的评论:

SELECT CASE WHEN B.IITYP <> 'E' THEN B.IDESC ELSE A.PCMT END AS PCMT, A.*, B.*
FROM HPO A
INNER JOIN IIML01 B on A.PPROD = B.IPROD 
WHERE PORD = :PON AND PLINE = :LIN;

相关内容

  • 没有找到相关文章

最新更新