[英]DB2 SQL If statement inside select and inner join
我有一個簡單的查詢。 我正在做一個簡單的選擇(見下文)。 現在,它可以正常工作,我想對另一個表進行內部聯接,並在其中進行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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.