簡體   English   中英

選擇和內部聯接中的DB2 SQL If語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM