2017-10-28 146 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