我不确定这是否可行,我有一个运行给定查询(JDBC)的java程序,并将结果输出到excel文件中。连接/ 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将告诉我们TABLE2中的哪一列可供选择。
- TABLE1.COMPANY的代码随机更改
- 我只需要TABLE2中的一行,假设ID = 1。
我不确定如何处理这个问题。我读到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语句中完成吗?
答案 0 :(得分:3)
您可以将其表达为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;
答案 1 :(得分:1)
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'