2017-10-28 8 views
0

Ich kämpfe mit einem Fall, wenn Aussage (MySQL) und seine wahrscheinlich etwas einfach ich vermisse.Verwendung von CASE WHEN-Anweisungen (MySQL)

ich eine ziemlich komplexe Abfrage, die einige Werte Sensor gibt und niedrigen und hohen Grenzen (die schließlich auslösen Alarme), als Teil dieser Abfrage, die ich verwenden -

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

Die Ausgabe von der Auswahl ist -

status sensor lowlimit highlimit 

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

aber ich brauche die Ergebnisse 'verketteten' (eine einzelne Zeile für jeden einzigartigen Status) zu sein, so dass -

status sensor lowlimit highlimit 

163  49  15   24 
128  25  4    8 

so müssen wohl etwas zu den Case-Anweisungen hinzufügen, aber wenn ich

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

verwenden dann nur 1 Zeile ausgegeben -

status sensor lowlimit highlimit 

163  49  15   24 

jede Hilfe zu schätzen.

Grüße Aktive

+0

Können Sie die Abfrage bitte teilen? – Mureinik

+0

Nicht wirklich, es gibt 8 Tabellen Joins und die Select-Anweisung hat tatsächlich 15 Elemente, das einzige Problem ist der Fall, wenn Anweisung auf mehr als 1 Zeile ausgibt – Active

Antwort

0

Wenn Sie das Ergebnis in der gleichen Zeile benötigen Sie ein seleft beitreten verwenden sollten (nicht Fall)

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

Danke, aber die Ausgabe von meinem vorhandenen Select ist keine Tabelle, es ist ein Multi-Level-Auswahl auf 8 Tabellen, das einzige Problem ist die Ausgabe für jeden Status ist auf 2 Zeilen – Active

+0

ich bin auf der Probe, die Sie zur Verfügung gestellt .. und basierend auf diese meine Antworten sollte richtig sein ... sowieso, wenn Sie beide benötigen die Werte in der gleichen Reihe, für wah ich weiß, sollten Sie ein richtiges Selfjoin ans verwenden, das in meiner Antwort vorgeschlagen wird – scaisEdge