DB2 SQL If statement inside select and inner join

DB2 SQL If statement inside select and inner join

我有一个简单的查询。我正在做一个简单的 select(见下文)。现在可以使用了,我想对另一个 table 进行内部连接,并在里面做一个 if 语句。我一直在网上搜索,找不到我要找的东西。

我基本上想加入项目大师 table 如果它是类型 '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;