2017-12-21 2 views
-1

Ich brauche wirklich Ihre Hilfe bei einer MySQL-Abfrage, wo ich keine Ahnung habe.Lesen der Daten nach Jahr (Spalte) und Monat (Zeile)

sagen, dass ich eine Tabelle mit zwei Spalten:

entryDate - datetime 
Recruits - int 

ich für den Aufbau einer MySQL-Abfrage versuche die Ausgabe wie das Bild zu bekommen. Bitte teilen Sie die Anfrage.

Sample Output Data

+2

'Bitte query' teilen ... Ich wollte nur, dass Sie fragen. Hast du schon eine Abfrage versucht? –

+0

_ "Ich habe keine Ahnung" _ Was hast du probiert? Etwas? –

+0

keine Ahnung bis jetzt, wie man das Jahr auf Spalte setzt. Vielleicht wird Pivot funktionieren, nicht sicher. – user1795928

Antwort

0

Sie können dies tun mit einer bedingten Aggregation und Arithmetik:

select monthname(entryDate) as mon, 
     sum(case when year(entryDate) = 2016 then recruits else 0 end) as recruits_2016, 
     sum(case when year(entryDate) = 2017 then recruits else 0 end) as recruits_2017, 
     (sum(case when year(entryDate) = 2017 then recruits end)/
     sum(case when year(entryDate) = 2017 then recruits end) 
     ) - 1 as change 
from t 
where entryDate between '2016-01-01' and entryDate < '2018-01-01' 
group by monthname(entryDate) 
order by min(entryDate); 
+0

Danke, warum diese -1 im Wechsel? – user1795928

+0

@ user1795928. . . Um die Werte zu erhalten, die Sie in der Spalte angeben. –

Verwandte Themen