2016-06-27 15 views
0

Ich habe 10 + Tabellen, die alle eine Spalte "Fehlermeldung" haben. Für jede Fehlermeldung gibt es eine eindeutige ID. Ich muss ein Skript schreiben, das die 5 häufigsten Fehler zwischen allen Tabellen zurückgibt. Hier ist ein Beispiel für die aktuelle Struktur mit dem gewünschten Ergebnis.SQL COUNT GROUP von mehreren Tabellen

Tabellen

Table 1 
**Error Message   
    Mes 1    
    Mes 2     
    Mes 3      

Table 2 
**Error Message  
    Mes 1 
    Mes 2    
    Mes 3    
    Mes 4 
    Mes 4 
    Mes 4 
    Mes 4      

Table 3 
**Error Message       
    Mes 5 
    Mes 1     
    Mes 6 
    Mes 2     

Gewünschtes Ergebnis

**Error Message  Error Count**  
    Mes 4    4 
    Mes 1    3 
    Mes 2    3 
    Mes 3    2 
    Mes 5    1 

Antwort

4
select errMsg, count(*) as errCnt 
from 
(
    select errMsg from table1 
    union all 
    select errMsg from table2 
    union all 
    select errMsg from table3 
    ... 
) tmp 
group by errMsg 
order by count(*) desc 

Je nach DB-Engine hinzufügen entweder limit 5 oder top 5 oder ROWNUM <= 5

+0

Thank you! Das funktioniert :) – LostInTheSauce