【发布时间】:2016-12-09 11:48:14
【问题描述】:
我不确定这是否可行,我有一个运行给定查询 (JDBC) 并将结果输出到 Excel 文件的 java 程序。连接/数据库信息是 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语句完成吗?
【问题讨论】:
-
IF ... ELSE是创建存储过程和函数时使用的 SQL 持久存储模块 (SQL/PSM) 标准的一部分。CASE在标准 SQL 查询中提供类似的功能。
标签: sql jdbc db2 ibm-midrange