2016-07-14 85 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

要试试你的答案 –