2016-07-14 9 views
-2

私はこのクエリでいくつかの結果を得ようとしていますが、問題は "GROUP BY c.campus"をYEAR(a.period_end)なしで使用しようとしたときに結果がキャンパスごとにグループ化され、 「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が "YEAR(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

あなたの答えを試してみよう –

関連する問題