首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgresql中使用CASE语句

在postgresql中使用CASE语句
EN

Stack Overflow用户
提问于 2017-09-16 05:42:21
回答 3查看 884关注 0票数 1
代码语言:javascript
复制
select *,'example' AS species 
from top_half 
inner join bottom_half 
on top_half.id = bottom_half.id 
order by species(
    CASE
       WHEN heads > arms THEN species.example = 'beast'
       when  tails > legs then species.example = 'beast'
       else species.example = 'weirdo'
    END
);

我收到以下错误:

SQL查询出现了一个错误:

PG::UndefinedTable: ERROR:表“物种”的-子句条目缺失第2行:当species.example =‘猛兽’时,SQL查询出现了一个错误: PG::未定义表:错误:表“物种”的-子句条目缺失,第2行:当头>臂时,species.example =‘猛兽’

如何解决这个问题?

codewars.com/kata/sql-basics-monsters-using-case/train/sql

我正试着解决上面的问题。

指令 您可以访问两个名为top_half和bottom_half的表,如下所示: top_half模式

  • id
  • 正面
  • 臂膀

bottom_half模式

  • id
  • 反面

必须按照以下格式返回格式的表:

输出模式

  • id
  • 正面
  • 臂膀
  • 反面

表上的ID匹配成一个完整的怪物。对于正面、手臂、腿和尾巴,你需要从每个表格中画出数据。

对物种来说,如果怪物的头部比手臂多,尾巴比腿多,那它就是“野兽”,否则就是“怪人”。这需要在物种列中捕捉到。

所有行都应返回(10)。

测试需要用用例。按物种排序。

请使用纯SQL,只在Ruby中进行测试。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-16 06:32:37

对物种来说,如果怪物的头部比手臂多,尾巴比腿多,那它就是“野兽”,否则就是“怪人”。这需要在物种列中捕捉到。

你得转移案子..。何时对SELECT子句。

代码语言:javascript
复制
select *,
       CASE
          WHEN heads > arms THEN 'beast'
          when tails > legs then 'beast'
          else 'weirdo'
       END    As Species
from top_half 
inner join ....
.....

测试需要用用例。按物种排序。

使用此条款:

代码语言:javascript
复制
....
ORDER BY species

或者这个:

代码语言:javascript
复制
.......
ORDER BY 
       CASE
          WHEN heads > arms THEN 'beast'
          when tails > legs then 'beast'
          else 'weirdo'
       END
票数 1
EN

Stack Overflow用户

发布于 2017-09-16 06:48:46

合并:

代码语言:javascript
复制
SELECT *, CASE WHEN heads > arms OR tails > legs THEN text 'BEAST'
               ELSE 'WEIRDO' END AS species
FORM   top_half 
JOIN   bottom_half USING (id)
ORDER  BY species;
票数 1
EN

Stack Overflow用户

发布于 2019-10-23 03:11:11

代码语言:javascript
复制
select t.id,t.heads, b.legs,t.arms,b.tails,
CASE 
     WHEN t.heads > t.arms THEN 'BEAST'
     WHEN b.tails > b.legs THEN 'BEAST'
     ELSE  'WEIRDO'

   END as species

from top_half t
join bottom_half b
ON t.id = b.id
ORDER BY species 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46250500

复制
相关文章

相似问题

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