2017-10-26 21 views
-1

Ich bin ziemlich neu in MySql und wollte eine Aufgabe mit Fall für eine bestimmte Spalte lösen. Mit der Abfrage:CASE WHEN in MySQL

SELECT T1.job, T1.pid, T2.T2MAX, T1.message, T1.duration, T1.T1SUM 
     FROM(SELECT monitor.statcatcher.job,monitor.statcatcher.pid, MIN(monitor.statcatcher.moment)AS T1MIN, monitor.statcatcher.message,monitor.statcatcher.duration, 
    SUM(Coalesce(monitor.flowmetercatcher.count, 0)) AS T1SUM 
      FROM monitor.statcatcher 
      LEFT JOIN monitor.flowmetercatcher ON monitor.statcatcher.pid = monitor.flowmetercatcher.pid AND DATE(monitor.statcatcher.moment) = 

    DATE(monitor.flowmetercatcher.moment) 
      WHERE DATE(monitor.statcatcher.moment) = CURRENT_DATE AND message IS NOT NULL 
      GROUP BY monitor.statcatcher.job,monitor.statcatcher.pid, monitor.statcatcher.message, monitor.statcatcher.duration)AS T1 
     INNER JOIN(SELECT monitor.statcatcher.job,MAX(monitor.statcatcher.moment) AS T2MAX, 
    monitor.statcatcher.pid 
     FROM monitor.statcatcher 
     WHERE DATE(monitor.statcatcher.moment) = CURRENT_DATE 
     GROUP BY monitor.statcatcher.job) AS T2 

     ON T1.job = T2.job AND T1.pid = T2.pid 

erhielt ich eine neue Tabelle mit verschiedenen Spalten und Nachrichten und T1SUM (wobei zwei von ihnen) hatte in der neuen Spalte folgende Einträge. Erwartet man sieht ungefähr so ​​aus:

message T1SUM color 
success 0 yellow 
success 0 yellow 
success 4 green 
    success 6 green 
    success 6 green 
    success 5 green 
success 6 green 

Jetzt habe ich, um herauszufinden, wie ich versuche Fall zu implementieren ... wenn .. sonst auf die Abfrage, so dass zum Beispiel sagen können, wenn Fall Wert = 0 und message = Erfolg dann Es gibt eine neue Spalte, sagen wir Farbe und der Eintrag ist 'gelb', wenn Wert> 0 und Nachricht = Erfolg Farbe ist 'grün'. Vielen Dank für Ihre Zeit so viel und

+0

See helfen: [? Warum soll ich einen MCVE für das, was ich scheint eine sehr einfache SQL-Abfrage zu sein] (https://meta.stackoverflow.com/questions/333952/why-soll-ich-biete-eine-mcve-für-was-scheint-zu-mir-sein-eine-sehr-einfache-sql-Abfrage) – Strawberry

+0

Können Sie die Tabelle Schema zur Verfügung stellen? –

Antwort

1
SELECT T1.job, T1.pid, T2.T2MAX, T1.message, T1.duration, T1.T1SUM ,'message' As message , 
CASE WHEN T1.T1SUM = 0 THEN 'yellow' WHEN T1.T1SUM > 0 THEN 'green' ELSE NULL END AS color 
     FROM(SELECT monitor.statcatcher.job,monitor.statcatcher.pid, MIN(monitor.statcatcher.moment)AS T1MIN, monitor.statcatcher.message,monitor.statcatcher.duration, 
    SUM(Coalesce(monitor.flowmetercatcher.count, 0)) AS T1SUM 
      FROM monitor.statcatcher 
      LEFT JOIN monitor.flowmetercatcher ON monitor.statcatcher.pid = monitor.flowmetercatcher.pid AND DATE(monitor.statcatcher.moment) = 
    DATE(monitor.flowmetercatcher.moment) 
      WHERE DATE(monitor.statcatcher.moment) = CURRENT_DATE AND message IS NOT NULL 
      GROUP BY monitor.statcatcher.job,monitor.statcatcher.pid, monitor.statcatcher.message, monitor.statcatcher.duration)AS T1 
     INNER JOIN(SELECT monitor.statcatcher.job,MAX(monitor.statcatcher.moment) AS T2MAX, 
    monitor.statcatcher.pid 
     FROM monitor.statcatcher 
     WHERE DATE(monitor.statcatcher.moment) = CURRENT_DATE 
     GROUP BY monitor.statcatcher.job) AS T2 
     ON T1.job = T2.job AND T1.pid = T2.pid 
+0

Vielen Dank :). Es hat wie ein Zauber funktioniert. –