2016-07-14 25 views
-2

我試圖用這個查詢得到一些結果,問題是當我嘗試使用沒有YEAR(a.period_end)的「GROUP BY c.campus」時,很明顯得到了按校園分組的結果,並且正確地對它們進行排序比如「2012,2013,2014,2015」,問題是EndYear混合,不是所有年份都顯示...提前致謝。有可能做一個「SUM」子查詢或應該做什麼?

查詢現在:

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 ; 

現在選擇結果:

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 

讓我解釋一下更好左右,基本上是按校園, 「SUM」,「再「或通過任何其他查詢或方法,SumConsEngy和SumCostEngy,EndYear應該」按年排序(a.period_end)ASC「,SConsum ####和SCost ####應該是到相應校園的新年數。當我嘗試查詢我的時候,只按「c.campus」進行分組,它並沒有顯示所有年份。

我問什麼是這樣的:

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 

等等...

+1

如果不按年份分組,則結果中的年份將是從所分組字段中遇到的值中選出的一個(有效)隨機數。 – Uueerdo

+0

請更好地解釋..我不明白你的目標..你現在需要按年結果嗎? – scaisEdge

+0

更新的問題 –

回答

0

你想從你的GROUP BY刪除b.account, a.service, a.user,也許使用GROUP_CONCAT(DISTINCT b.account)

+0

要試試你的答案 –