使用CASE WHEN语句(MySQL)

时间:2017-10-28 18:31:14

标签: mysql

在一个case语句(MySQL)和它可能是一些简单的东西的情况下苦苦挣扎。

我有一个相当复杂的查询,它会输出一些传感器值以及下限和下限(最终将触发警报),作为我使用的查询的一部分 -

case when sequence=0 then value END as lowlimit, 
case when sequence=1 then value END as highlimit

select的输出是 -

status  sensor  lowlimit    highlimit

163      49      NULL          24
163      49       15          NULL
128      25      NULL          8
128      25       4           NULL

但我需要将结果连接起来' (每个唯一状态的一行),因此 -

status  sensor  lowlimit    highlimit

163       49      15           24
128       25      4             8

所以可能需要在case语句中添加一些内容,但是如果我使用

max(case when sequence=0 then value END) as lowlimit, 
max(case when sequence=1 then value END) as highlimit

然后只输出1行 -

 status sensor  lowlimit    highlimit

 163     49        15          24

任何得到的帮助。

此致 活性

1 个答案:

答案 0 :(得分:0)

如果您需要同一行的结果 你应该使用seleft join(不是case)

select a.status, a.sensor, a.values as lowlimit, b.value as highlimit
from my_table a 
inner join (
    select status, sensor, value from my_table 
    where sequence = 1
  ) b on a.sensor = b.sensor and a.status = b.status
where a.sequence = 0