以下查询的要点是返回一个人员列表以及他们是否不满意.但是,如果我不知道他们是否幸福,我想列出他们的名字和他们不高兴的"快乐".由于我对定义不快乐的内容有一些额外的要求,这很复杂.
我正在写这样的查询......
Select name.firstName,
CASE
WHEN Mood.mood is not null
THEN 'Unhappy'
ELSE 'Happy'
END Unhappy
From name
Mood
WHERE mood.firstName(+) = name.firstName
AND mood.type IN ('Hungry','Tired','Fatigued','Bored',null)
AND mood.value(+) > 5;
Run Code Online (Sandbox Code Playgroud)
所以我想从表名返回每一个名字,并且要么是"happy"或"unhappy"的值,即使这些名字可能在心情表中也可能不在.当我编写它时运行它,我没有行.我想这可能涉及我的mood.type行,因为我不能在"in"语句中使用左连接.
我认为你有几个问题:
您可以删除分号并将IN表达式更改为此:
AND (mood.type IN ('Hungry','Tired','Fatigued','Bored') OR mood.type IS NULL)
Run Code Online (Sandbox Code Playgroud)
另外,我强烈建议您不要使用过时的连接语法.使用JOIN关键字可能是一个好主意,因为它使这种查询更容易.
SELECT
name.firstName,
CASE
WHEN Mood.mood IS NOT NULL
THEN 'Unhappy'
ELSE 'Happy'
END Unhappy
FROM name
LEFT JOIN Mood ON
mood.firstName = name.firstName AND
mood.type IN ('Hungry','Tired','Fatigued','Bored') AND
mood.value > 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6246 次 |
| 最近记录: |