2 Stimmen

Wie man die Ergebnisse von drei verschiedenen Abfragen aus derselben Tabelle addiert

Ich versuche, die Ergebnisse der folgenden drei Abfragen an derselben Tabelle zusammenzufassen, um einen einzigen Bericht zu generieren.

SELECT b.BG_SEVERITY as Severity, count (b.BG_BUG_ID) as Total
FROM BUG b where
 b.BG_USER_12='QA3'
 group by b.BG_SEVERITY

SELECT s.BG_SEVERITY as Severity, count (s.BG_BUG_ID) as Total
FROM BUG s where
 s.BG_USER_12='QA1'
 group by s.BG_SEVERITY

SELECT a.BG_SEVERITY as Severity, count (a.BG_BUG_ID) as Total
FROM BUG a where
 a.BG_USER_12='QA2'
 group by a.BG_SEVERITY

Das Ergebnis jeder Abfrage wird wie folgt aussehen:

Severity   Total
1-Critical  4
2-High      94
3-Medium    23
4-Low       45

Ich möchte die 'Total'-Spalte aus den drei obigen Abfragen kombinieren / zusammenfassen. Welche SQL-Funktion kann ich hierfür verwenden?

2voto

user1626711 Punkte 66

Wenn Sie sql-server verwenden, können Sie versuchen, union zu verwenden. etwas wie das:

SELECT
    Severity,
    SUM(Total)
FROM
    (
    SELECT b.BG_SEVERITY as Severity, count (b.BG_BUG_ID) as Total FROM BUG b where b.BG_USER_12='QA3' group by b.BG_SEVERITY
    UNION ALL
    SELECT s.BG_SEVERITY as Severity, count (s.BG_BUG_ID) as Total FROM BUG s where s.BG_USER_12='QA1' group by s.BG_SEVERITY    
    UNION ALL 
    SELECT a.BG_SEVERITY as Severity, count (a.BG_BUG_ID) as Total FROM BUG a where a.BG_USER_12='QA2' group by a.BG_SEVERITY
    ) tbl
GROUP BY
    Severity

2voto

John Woo Punkte 249233

Sie können IN in Ihrer Bedingung verwenden.

SELECT   b.BG_SEVERITY as Severity, 
         COUNT(b.BG_BUG_ID) as Total
FROM     BUG b 
WHERE    b.BG_USER_12 IN ('QA3','QA1','QA2')
GROUP BY b.BG_SEVERITY

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X