首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么能得到一个结果?SQL: CASE返回两行

我怎么能得到一个结果?SQL: CASE返回两行
EN

Stack Overflow用户
提问于 2020-12-11 06:36:24
回答 2查看 86关注 0票数 0

我有两个表,用于汽车信息识别他们有哪种类型的引擎。因此,我需要第二张桌子,上面列出了这辆车的所有特殊设备。表1区分了电池和无电池.用table2以外的专用设备的钥匙,可以识别“无电池”汽车是混合动力车还是内燃机汽车。如果他们有特殊的设备"ABC“钥匙,他们是混合动力汽车。如果不是的话,他们就是燃烧汽车。

表1:

代码语言:javascript
运行
复制
> ID    |Car    |Engine      |
> 1     |RED    |BATTERY     |  
> 2     |YELLOW |NO-BATTERY  |
> 3     |BLUE   |NO-BATTERY  |  

表2:

代码语言:javascript
运行
复制
-ID-|SPECIAL EQUIPMENT
1   |AAA
1   |BBB
1   |CCC
2   |ABC
2   |BBB
2   |CCC
3   |ABC
3   |BBB
3   |CCC

SQL查询是:

代码语言:javascript
运行
复制
SELECT DISTINCT    mytable.id, mytable.car, mytable.engine
FROM
    (SELECT table1.id, table1.car, table1.engine, table1.type,
    
    CASE    WHEN table1.type = 'Battery'    THEN 'BEV'
            WHEN table1.type = 'No-Battery'     THEN (CASE   WHEN special Equipment = 'ABC' THEN 'HYBRID' 
                                                      ELSE 'COMBUSTION' END)                                               
    END AS engine
    
    FROM table1
    INNER JOIN table 2 key ON table1.id = table2.id  
    WHERE (cars.id = 2 )  
)t;

SQL代码返回汽车ID 2->2列,一次用于发动机型混合式,一次用于发动机类型燃烧。

结果(目前):

代码语言:javascript
运行
复制
> ID    |Car    |type        |engine
> 2     |YELLOW |NO-BATTERY  |HYBRID    
> 2     |YELLOW |NO- BATTERY |COMBUSTION

我想展示:

代码语言:javascript
运行
复制
> ID    |Car    |type        |engine
> 2     |YELLOW |NO-BATTERY  |HYBRID    

燃烧的结果是错误的,但显示.我怎么才能得到正确的回报呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-11 14:00:19

我想你只是想要exists

代码语言:javascript
运行
复制
select t1.*,
       (case when exists (select 1
                          from table2 t2
                          where t2.id = t1.id and t2.special = 'ABC'
                         )
             then 'Hybrid' else 'Combustion'
        end) as engine
from table1 t1;
票数 2
EN

Stack Overflow用户

发布于 2020-12-11 06:53:11

我认为问题是你在要求

代码语言:javascript
运行
复制
SELECT DISTINCT    mytable.id, mytable.car, mytable.engine

当您只想显示不同的mytable.car时

在结果中,有两个不同的mytable.engine显示,它显示的是两个不同的结果。

代码语言:javascript
运行
复制
SELECT DISTINCT    mytable.car

我对JQL不太了解

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65246798

复制
相关文章

相似问题

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