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;
我有一个简单的查询。我正在做一个简单的 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;