2017-05-10 4 views
0

Ich möchte (`Pre-Scan Hours Planned`-`Pre-Scan Time Spent`) nur positiv sein. Ich will es nicht, wenn das Ergebnis negativ ist. Ich habe (`Pre-Scan Hours Planned`-`Pre-Scan Time Spent`)>0 in der SELECT-Klausel versucht, aber es hat nicht funktioniert.Wie bekomme ich nur positive Ergebnisse von meiner MySQL-Abfrage?

SELECT 

     `Account Executive`, 
     `DC Clerk`, 
     `Project Number`, 
     Manufacturer, 
     `Open Project Date`, 
     `DUE DATE`, 
     `Project Status`, 

     (`Pre-Scan Hours Planned`+ 
     `Radiated Emissions Hours Planned`+ 
     `Conducted Emissions Hours Planned`+ 
     `Harmonic and Flicker Hours Planned`+ 
     `ESD Hours Planned`+ 
     `RF Immunity Hours Planned`+ 
     `EFT Hours Planned`+ 
     `Surge Hours Planned`+ 
     `Conducted RF Hours Planned`+ 
     `Magnetic Field Hours Planned`+ 
     `Voltage Dips Hours Planned`+ 
     `EUT Photos and Data Sheet Hours Planned`+ 
     `Data Sheet Hours Planned`) AS 'Total Planned Hours', 

     (`Pre-Scan Time Spent`+ 
     `Radiated Emissions Time Spent`+ 
     `Conducted Emissions Time Spent`+ 
     `Harmonic and Flicker Time Spent`+ 
     `ESD Time Spent`+ 
     `RF Immunity Time Spent`+ 
     `EFT Time Spent`+ 
     `Surge Time Spent`+ 
     `Conducted RF Time Spent`+ 
     `Magnetic Field Time Spent`+ 
     `Voltage Dips Time Spent`+ 
     `EUT Photos and Data Sheet Time Spent`+ 
     `Data Sheet Time Spent`) AS 'Total Spent Hours', 

     ((`Pre-Scan Hours Planned`-`Pre-Scan Time Spent`)+ 
     (`Radiated Emissions Hours Planned`-`Radiated Emissions Time Spent`) + 
     (`Conducted Emissions Hours Planned`-`Conducted Emissions Time Spent`) + 
     (`Harmonic and Flicker Hours Planned`-`Harmonic and Flicker Time Spent`) + 
     (`ESD Hours Planned`- `ESD Time Spent`) + 
     (`RF Immunity Hours Planned`-`RF Immunity Time Spent`) + 
     (`EFT Hours Planned`- `EFT Time Spent`) + 
     (`Surge Hours Planned`-`Surge Time Spent`) + 
     (`Conducted RF Hours Planned`-`Conducted RF Time Spent`) + 
     (`Magnetic Field Hours Planned`-`Magnetic Field Time Spent`)+ 
     (`Voltage Dips Hours Planned`-`Voltage Dips Time Spent`) + 
     (`EUT Photos and Data Sheet Hours Planned`-`EUT Photos and Data Sheet Time 
     Spent`) + 
     (`Data Sheet Hours Planned` -`Data Sheet Time Spent`)) AS 'Remaining Hours', 

     (`Pre-Scan Status`+ 
     `Radiated Emissions Status`+ 
     `Conducted Emissions Status`+ 
     `Harmonic and Flicker Status`+ 
     `ESD Status`+ 
     `RF Immunity Status`+ 
     `EFT Status`+ 
     `Surge Status`+ 
     `Conducted RF Status`+ 
     `Magnetic Field Status`+ 
     `Voltage Dips Status`+ 
     `EUT Photos Status`+ 
     `Data Sheet Status`) AS 'Items Remaining' 

    FROM 
     EMCtestplan 

mich besser, wir haben unten Abfrage Zum Beispiel erklären lassen:

Ich brauche dies:

select 
a, 
b, 
c, 
(f1-f2)+(f3-f4)+(f5-f6) as Sum 
from table 

Ich möchte (f1-f2)+(f3-f4)+(f5-f6) as Sum dieser Code nur die positive Formel berechnen. Zum Beispiel nicht die Summe berechnen, wenn (f3-f4) ist negetive und nur calculte (f1-f2)+(f5-f6)

BITTE Einige Körper Helfen Sie mir!

+0

Setzen Sie diese Anweisung in eine 'Where'-Klausel. –

+1

Ich schlage vor, dass Sie Ihre Frage aktualisieren und überflüssige "Antworten" entfernen – Degan

+0

Bitte posten Sie keine Antworten, um Informationen hinzuzufügen, die Ihre Frage klären. Verwenden Sie stattdessen den Link [Bearbeiten] zu Ihrer Frage, um weitere Informationen hinzuzufügen. Die Schaltfläche Post-Antwort sollte nur für vollständige Antworten auf die Frage verwendet werden. –

Antwort

0

Was möchten Sie Verwenden Sie, wenn es negativ ist? Ich nehme an, dass Sie Null verwenden möchten. Wechsel:

(`Pre-Scan Hours Planned`-`Pre-Scan Time Spent`) 

zu:

(CASE WHEN `Pre-Scan Hours Planned`-`Pre-Scan Time Spent` > 0 
     THEN (`Pre-Scan Hours Planned`-`Pre-Scan Time Spent`) 
     ELSE 0 END) 

Sie etwas anderes als Null verwenden können, wenn Sie mögen.

+0

OH mein Gott. Ich denke, das wird funktionieren .... Ich habe diese Syntax vergessen .... lass mich es versuchen, Vielen Dank –

+0

Wo kann ich das in auswählen? –

+0

Sie können es verwenden, wo Sie wollen. In Ihrem Fall möchten Sie es wahrscheinlich anstelle des "(Vor dem Scannen geplanten Stunden-Vor-Scan-Zeit)" verwenden, wie ich in meiner Antwort erwähnt habe. –

0

auf die neue Frage eine Antwort Ändern der OP als Antwort gestellt hat

OP hat:

select 
a, 
b, 
c, 
(f1-f2)+(f3-f4)+(f5-f6) as Sum 
from table 

Ich will (f1-f2) + (f3-f4) + (f5-f6) als Summe diesen Code berechnen Sie einfach die positive Formel. Zum Beispiel nicht berechnet die Summe if (f3-f4) ist negetive und nur calculte (f1-f2) + (f5-f6)

Wenn es Ihnen nur um (f3-f4) negativ sind:

select 
a, 
b, 
c, 
CASE 
    When (f3-f4) < 0 then (f1-f2)+(f5-f6) 
    Else (f1-f2)+(f3-f4)+(f5-f6) 
END as Sum 
from table 

Wenn die Sorge, dass jeder (f1-f2), (f3-f4), (f5-f6) negativ ist, dann würde ich anders behandeln

select 
a, 
b, 
c, 
(MAX(f1-f2,0) + MAX(f3-f4,0) + MAX(f5-f6,0) as Sum 
from table 
+0

Um den Namen herum müssen Rückstichwörter verwendet werden, da Leerzeichen und Bindestriche enthalten sind. – Barmar

+0

Danke für die Antwort ... Aber es kann nicht helfen, weil Sie etwas hinzufügen, wo cluase es auf alle collumn auswirken wird ... und ich will dies nur in der 4. Spalte für jeden von ihnen haben ... Ich will nicht in meiner ganzen Spalte für retreive Daten zu bewirken –

Verwandte Themen