2017-10-28 5 views
0

ステートメント(MySQL)とそのおそらく何かが紛失しているケースで苦労しています。選択からCASE WHENステートメントの使用(MySQL)

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

出力される -

Iは、いくつかのセンサ値と低および高限界を(最終的にアラームをトリップすること)を出力するかなり複雑なクエリを持っている、私が使用するクエリの一部として -

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

ありがとうございます。複数のレベルで8つのテーブルを選択する場合、唯一の問題は各ステータスの出力が2行であることです – Active

+0

私はあなたが提供したサンプルに基づいています。これに基づいて私の答えは正しいと思います。同じ行の値は、私が知っている、私の答えで提案された適切なセルフジョインズを使用する必要があります – scaisEdge

関連する問題