我有一个简单的查询。我正在做一个简单的选择(见下文)。现在,它可以正常工作,我想对另一个表进行内部联接,并在其中进行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
答案 0 :(得分:2)
尚不完全清楚,但我认为您想要这样做:
<li>
根据评论,您需要这样的内容:
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;