2017-10-28 150 views
0

在语句(MySQL)及其可能简单丢失的情况下挣扎。使用CASE WHEN语句(MySQL)

我有一个相当复杂的查询,其输出的一些传感器值和低和高限值(即最终跳闸,警报),作为该查询我使用的一部分 -

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

的输出从选择是 -

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 

任何援助表示赞赏。

问候 活动

+0

可以共享整个查询吗? – Mureinik

+0

不是真的,有8个表连接,而select语句实际上有15个元素,唯一的问题是当语句在多于1行上输出时的情况 – Active

回答

0

如果您需要在同一行的结果 您应该使用seleft加入(不区分)

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 
+0

谢谢,但我现有的select的输出不是表,它是多级选择8个表,唯一的问题是每个状态的输出是在2行 – Active

+0

我基于您提供的示例..并基于此我的答案应该是正确的......无论如何,如果你需要在同一行上的值,对于我知道的哇,你应该在我的回答中使用正确的selfjoin ans – scaisEdge