2012-04-09 12 views
1

Ich habe eine Tabelle mit Ländern, Jahren und Mengen für jedes Jahr. Ich versuche, eine Abfrage zu schreiben, die die Gesamtbeträge für ein bestimmtes Jahr summiert und mir als Spalte angibt.Wählen Sie den Betrag für ein bestimmtes Jahr

zum Beispiel eine Ausgabe zu haben, die wie folgt aussieht:

Country 1991  1992  1993 
France  25  12  38 

habe ich versucht, eine Abfrage wie diese, aber ohne Erfolg:

SELECT 
    country as "Recipient", 
    SUM(usd_amount) AS "1991" WHEN project_year = 1991, 
    SUM(usd_amount) AS "1992" WHEN project_year = 1992, 
    SUM(usd_amount) AS "1993" WHEN project_year = 1993 

FROM tb1 

GROUP BY project_year, country 
order by country, project_year 

irgendwelche Vorschläge? Danke! Chris

+1

Aktie den exapmle von Daten in der Tabelle gespeichert. –

Antwort

0

dieses Probieren Sie:

SELECT 
    country as "Recipient", 
    SUM(if(project_year = 1991, usd_amount, 0)) AS "1991", 
    SUM(if(project_year = 1992, usd_amount, 0)) AS "1992", 
    SUM(if(project_year = 1993, usd_amount, 0)) AS "1993", 
FROM tb1 
GROUP BY country 
ORDER BY country 

PS: Es macht keinen Sinn, von Projektjahr zu bestellen, wie Sie bereits auf sie aggregiert sind.

0

versuchen Sie die folgenden

SELECT 
    country as "Recipient", 
    SUM(case WHEN project_year = 1991 then usd_amount else 0 end) AS "1991" , 
    SUM(case WHEN project_year = 1992 then usd_amount else 0 end) AS "1992" , 
    SUM(case WHEN project_year = 1993 then usd_amount else 0 end) AS "1993" 

FROM tb1 

GROUP BY country, project_year 
order by country, project_year 
Verwandte Themen