2016-07-14 9 views
-2

Ich versuche, einige Ergebnisse mit dieser Abfrage zu erhalten, das Problem ist, wenn ich versuche, "GROUP BY c.campus" ohne YEAR (a.period_end), und natürlich die Ergebnisse nach Campus gruppiert, plus sie richtig sortieren wie "2012, 2013, 2014, 2015", das Problem ist EndYear Mixe, nicht alle Jahre anzeigen ... Vielen Dank im Voraus.Es ist möglich, eine "SUM" Unterabfrage zu machen oder was sollte getan werden?

Query by jetzt:

SELECT DISTINCT a.user, a.service, GROUP_CONCAT(b.account) accounts, 
YEAR(a.period_end) AS EndYear, 
SUM(a.consum) AS SumConsumEngy, 
SUM(a.cost) AS SumCostEngy, c.campus 
FROM `sdspanel1`.`pdc_consum_engy` a 
INNER JOIN `sdspanel1`.`ctrl_services` b ON(a.servicio = b.id) 
INNER JOIN `sdspanel1`.`pdc_services_engy` c ON(c.accuont = b.account) 
WHERE c.campus IS NOT NULL AND c.campus <> '' 
AND a.period_end IS NOT NULL AND a.period_end <> '' 
GROUP BY YEAR(a.period_end), c.campus, b.account, a.service, a.user 
ORDER BY YEAR(a.period_end) ASC ; 

Wählen Sie Ergebnisse jetzt: wieder

user service accounts EndYear SumConsumEngy SumCostEngy Campus 
    4   14 191,191 2012  9919293  33339493  cname1 
    4   23 238,388 2012  9283182  31931993  cname1 
    4   14 191,191 2013  999293  3939493  cname1 
    4   14 191,191 2013  991293  939493  cname1 
    4   23 238,388 2014  9183182  31432993  cname2 
    4   23 238,388 2012  9083182  31731993  cname2 
    4   14 191,191 2012  9999293  36539403  cname2 
    4   23 238,388 2013  9283182  32931923  cname2 
    4   14 191,191 2013  9919293  33039843  cname2 
    4   23 238,388 2014  9283182  31231993  cname2 

mich besser erklären lassen oder so, im Grunde ist von Campus-Gruppe, "SUM"“ "oder durch eine andere Abfrage oder bedeutet die SumConsEngy und SumCostEngy, EndYear sollte" ORDERED BY YEAR (a.period_end) ASC ", SConsum #### und SCost #### sollte die neue Summe der Jahre auf dem entsprechenden Campus sein . Wenn ich die Abfrage versuche, nur nach "c.campus" zu gruppieren, werden nicht alle Jahre angezeigt.

Was für ich bitte, ist so etwas wie dieses:

user service accounts EndYear SumConsumEngy SumCostEngy Campus 
    4 snumbers acnumbers 2012 SConsum2012 SCost2012  cname1 
    4 snumbers acnumbers 2013 SConsum2013 SCost2013  cname1 
    4 snumbers acnumbers 2014 SConsum2014 SCost2014  cname1 
    4 snumbers acnumbers 2015 SConsum2015 SCost2015  cname1 
    4 snumbers acnumbers 2016 SConsum2016 SCost2016  cname1 
    4 snumbers acnumbers 2011 SConsum2011 SCost2011  cname2 
    4 snumbers acnumbers 2012 SConsum2012 SCost2012  cname2 
    4 snumbers acnumbers 2013 SConsum2013 SCost2013  cname2 
    4 snumbers acnumbers 2014 SConsum2012 SCost2012  cname2 
    4 snumbers acnumbers 2015 SConsum2012 SCost2012  cname2 
    4 snumbers acnumbers 2016 SConsum2012 SCost2012  cname2 

und so weiter ...

+1

Wenn Sie nicht nach Jahr gruppieren, wird das Jahr in den Ergebnissen ein (effektiv) zufälliges sein, das aus den Werten für die Felder ausgewählt wird, die nach Gruppen gruppiert sind. – Uueerdo

+0

Bitte erklären Sie besser .. ich verstehe nicht gut Ihr Ziel .. Sie brauchen yoy Ergebnis jetzt von Jahr zu Jahr? – scaisEdge

+0

Aktualisierte Frage –

Antwort

0

Haben Sie b.account, a.service, a.user von Ihrem GROUP BY entfernen möchten, und vielleicht GROUP_CONCAT(DISTINCT b.account) verwenden.

+0

Ich werde Ihre Antwort versuchen –

Verwandte Themen