条件 SQL 语句 DB2 基于列

Conditional SQL Statement DB2 Based on columns

我不确定这是否可行,我有一个 java 程序运行给定的查询 (JDBC) 并将结果输出到 excel 文件中。 connection/db 信息是 IBM as400,V7R1M0。

假设我有以下表格:

 ====================    =================================
 |      TABLE1      |    |             TABLE2            | 
 ====================    =================================   
 | Company |  CODE  |    |  ID   | CODE1 | CODE2 | CODE3 |
 --------------------    --------------------------------
 |   001   |   E1   |    |   1   |  10   |  18   |   21  |
 |   005   |   E3   |    |   2   |  14   |  19   |   23  |
 |   009   |   E1   |    |   3   |  17   |  20   |   25  |   
 |   015   |   E2   |    |   4   |   5   |  11   |   15  |
 ====================    ================================= 

我的预期结果如下:

==============================
           RESULTS
==============================
|  Company  |  CODE  | CODE3 |
------------------------------
|    005    |   E3   |   21  |
==============================

备注:

  • TABLE1.CODE will tell us what column from TABLE2 to choose from.
  • TABLE1.COMPANY's CODE changes randomly
  • I only need one row from TABLE2, assume ID = 1 always.

我不确定如何处理这个问题。我读到 IBM AS400 不允许 IF ... ELSE.

我的想法有点像(伪代码):

SET Value = SELECT CODE FROM TABLE1 WHERE Company ='005'
IF Value = 'E1'
   SELECT CODE1 FROM TABLE1 WHERE ID = 1;
ELSE IF Value = 'E2'
   SELECT CODE2 FROM TABLE1 WHERE ID = 1;
...

编辑

我知道我可以在 Java 中做到这一点。但我不想改变它。可以从 SQL 语句完成吗?

Select a.Company, a.Code, 
    case a.Code
        when 'E1' then b.Code1
        when 'E2' then b.Code2
        when 'E3' then b.Code3
      end 
From table1 a
   join table2 b on b.Id = 1
Where c.Company ='005'

您可以将其表示为 SQL 查询:

select t1.company, t1.code,
       (case when t1.code = 'E1' then t2.code1
             when t1.code = 'E2' then t2.code2
             when t1.code = 'E3' then t2.code3
        end) as t1_code
from table1 t1 join
     table2 t2
     on t2.id = 1;