2017-08-04 1 views
0

Ich würde gerne wissen, ob es eine Möglichkeit gibt, Summierung von bereits berechneten abgeleiteten Spalten in eine neue Spalte zu finden.Berechnen SUM Summe von mehreren abgeleiteten Spalten

Employee_KT_State 
-------------------------------------------------------- 
Emp_Id  Team   KT_State   Left_Org 
---------------------------------------------------------- 
101  Orange   In Progress   2016 
102  Red   Complete    2016 
103  Orange   Complete    N 
104  Green   In Progress   N 
105  Orange   Not Started   N 
106  Green   Not Started   2015 
107  Red   In Progress   N 
108  Red   Complete    N 
109  Green   Complete    N 
----------------------------------------------------------- 

SELECT 
    SUM(if (KT_State = 'In Progress' AND Team = 'Red', 1, 0)) AS 'Red In Progress Count', 
    SUM(if (KT_State = 'In Progress' AND Team = 'Green', 1, 0)) AS 'Green In Progress Count', 
    SUM(if (KT_State = 'In Progress' AND Team = 'Orange', 1, 0)) AS 'Orange In Progress Count' 
    SUM(if (KT_State = 'Complete' AND Team = 'Green', 1, 0)) AS 'Green Complete Count' 
    FROM 
     Employee_KT_State 

Ich versuche, Green In Progress und Complete Count hinzuzufügen. Kann ich anstelle einer anderen SUM mit verschiedenen if-Bedingungen direkt die aus der 2. und 4. Spalte abgeleitete Anzahl verwenden?

something like - 

    SELECT 
    SUM(if (KT_State = 'In Progress' AND Team = 'Red', 1, 0)) AS 'Red In Progress Count', 
    SUM(if (KT_State = 'In Progress' AND Team = 'Green', 1, 0)) AS 'Green In Progress Count', 
    SUM(if (KT_State = 'In Progress' AND Team = 'Orange', 1, 0)) AS 'Orange In Progress Count' 
    SUM(if (KT_State = 'Complete' AND Team = 'Green', 1, 0)) AS 'Green Complete Count', 
    'Green In Progress Count' + 'Green Complete Count' AS ' Green In-Progress and Complete Count' --> Will this yield me results?? 
    FROM 
     Employee_KT_State 

Jede Hilfe wird geschätzt.

+0

Nein, Sie können keine Spalte alias im 'select' verwenden, wo sie definiert ist. –

+0

Ok, also empfehlen Sie mir, die erste Abfrage als Unterabfrage und die eigentliche Abfrage zu verwenden, um die Summe der einzelnen Spalten zu berechnen? –

+0

So oder so ist es gut – Strawberry

Antwort

2

In MySQL können Sie vereinfachen Code:

SELECT SUM(KT_State = 'In Progress' AND Team = 'Red') AS `Red In Progress Count`, 
     SUM(KT_State = 'In Progress' AND Team = 'Green') AS `Green In Progress Count`, 
     SUM(KT_State = 'In Progress' AND Team = 'Orange') AS `Orange In Progress Count`, 
     SUM(KT_State = 'Complete' AND Team = 'Green') AS `Green Complete Count`, 
FROM Employee_KT_State; 

Um Ihre zwei zusätzliche Spalten zu erhalten, müssen Sie explizit die SUM() Ausdruck haben.

Beachten Sie, dass ich die Spaltennamen geändert habe, um Backticks für die Spaltenaliase zu verwenden. Verwenden Sie nur einfache Anführungszeichen für String- und Datumskonstanten.

+0

Danke für die Antwort Gordon. Leider brauche ich die Zählung von Green In Progress und Green Complete, wie in der Frage angegeben. –

+0

@SrinivasLakshman. . . Sie scheinen zu wissen, wie man diese Berechnung durchführt. Sie können keine Abkürzung verwenden. –

0

Verwenden Sie eine Unterabfrage

SELECT t.*, 
     `Green In Progress Count` + `Green Complete Count` 
      As ` Green In-Progress and Complete Count` 
FROM (
    SELECT 
    SUM(if (KT_State = 'In Progress' AND Team = 'Red', 1, 0)) AS `Red In Progress Count`, 
    SUM(if (KT_State = 'In Progress' AND Team = 'Green', 1, 0)) AS `'Green In Progress Count`, 
    SUM(if (KT_State = 'In Progress' AND Team = 'Orange', 1, 0)) AS `Orange In Progress Count` 
    SUM(if (KT_State = 'Complete' AND Team = 'Green', 1, 0)) AS `Green Complete Count` 
    FROM 
     Employee_KT_State 
) t 

Vereinfachte Demo: http://sqlfiddle.com/#!9/b7ddd8c/2

SELECT t.*, 
     `Green In Progress Count` + `Green Complete Count` 
      As ` Green In-Progress and Complete Count` 
FROM (
    SELECT x As `Green In Progress Count`, 
      2* x As `Green Complete Count` 
    FROM Employee_KT_State 
) t 

| Green In Progress Count | Green Complete Count | Green In-Progress and Complete Count | 
|-------------------------|----------------------|--------------------------------------| 
|      1 |     2 |         3 | 
|      2 |     4 |         6 | 
|      3 |     6 |         9 | 
+0

Vielen Dank! Ich werde das Gleiche tun! –