首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于列的条件SQL语句DB2

基于列的条件SQL语句DB2
EN

Stack Overflow用户
提问于 2016-08-03 16:21:58
回答 2查看 1.2K关注 0票数 0

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

假设我有以下表格:

代码语言:javascript
运行
复制
 ====================    =================================
 |      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  |
 ====================    ================================= 

我的预期结果如下:

代码语言:javascript
运行
复制
==============================
           RESULTS
==============================
|  Company  |  CODE  | CODE3 |
------------------------------
|    005    |   E3   |   21  |
==============================

注:

  • choose将告诉我们从TABLE2中选择哪一列。
  • TABLE1.COMPANY的代码随机变化
  • 我只需要从TABLE2得到一行,假设ID =1总是这样。

我不知道该怎么处理。我读到IBM AS400不允许IF ... ELSE.

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

代码语言:javascript
运行
复制
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语句来完成吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-03 16:27:58

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

代码语言:javascript
运行
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2016-08-03 16:27:55

代码语言:javascript
运行
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38748958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档