Sql 联接表上的聚合
我使用下面的查询来获得如下所示的结果。实际上,查询只是连接两个表Sql 联接表上的聚合,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我使用下面的查询来获得如下所示的结果。实际上,查询只是连接两个表 SELECT MT.mkt_Area_ID,MA.mkt_Reg_ID,MT.mktcate_id,MT.target_Amt,MT.year FROM [CRM].[tblMktArea_Target] MT JOIN CRM.tblMarketingArea MA ON MA.mkt_Area_ID= MT.mkt_Area_ID WHERE month IN (05,04) AND year=2013 AND MA.mk
SELECT MT.mkt_Area_ID,MA.mkt_Reg_ID,MT.mktcate_id,MT.target_Amt,MT.year
FROM [CRM].[tblMktArea_Target] MT JOIN CRM.tblMarketingArea MA
ON MA.mkt_Area_ID= MT.mkt_Area_ID WHERE month IN (05,04) AND year=2013 AND MA.mkt_Area_ID=1
AND MA.mkt_Reg_ID =1
如何按mktcate_id对结果进行分组,以获得每个类别的目标金额之和
我试过:
SELECT MT.mkt_Area_ID,MA.mkt_Reg_ID,MT.mktcate_id,Sum(MT.target_Amt),MT.year
FROM [CRM].[tblMktArea_Target] MT JOIN CRM.tblMarketingArea MA
ON MA.mkt_Area_ID= MT.mkt_Area_ID WHERE month IN (05,04) AND year=2013 AND MA.mkt_Area_ID=1
AND MA.mkt_Reg_ID =1 group by MT.mktcate_id
和getting error您将得到一个异常,因为有必要在
GROUP BY
子句中添加非聚合列。例如
SELECT MT.mkt_area_id,
MA.mkt_reg_id,
MT.mktcate_id,
SUM(MT.target_amt),
MT.year
FROM [CRM].[TBLMKTAREA_TARGET] MT
JOIN CRM.TBLMARKETINGAREA MA
ON MA.mkt_area_id = MT.mkt_area_id
WHERE month IN ( 05, 04 )
AND year = 2013
AND MA.mkt_area_id = 1
AND MA.mkt_reg_id = 1
GROUP BY MT.mktcate_id,
MT.mkt_area_id,
MA.mkt_reg_id,
MT.year
您应该始终对不在聚合函数(如SUM、MAX、AVG)内的所有列进行分组。 将MT.mkt_Area_ID、MA.mkt_Reg_ID、MT.year字段放入GROUP BY子句:
SELECT MT.mkt_Area_ID,
MA.mkt_Reg_ID,
MT.mktcate_id,
Sum(MT.target_Amt),
MT.year
FROM [CRM].[tblMktArea_Target] MT JOIN CRM.tblMarketingArea MA ON
MA.mkt_Area_ID = MT.mkt_Area_ID
WHERE month IN (05,04) AND
year = 2013 AND
MA.mkt_Area_ID = 1 AND
MA.mkt_Reg_ID = 1
GROUP BY MT.mktcate_id,
MT.mkt_Area_ID,
MA.mkt_Reg_ID,
MT.year
或从SELECT子句中删除MT.mkt\U Area\U ID、MA.mkt\U Reg\U ID、MT.year字段:
SELECT MT.mktcate_id,
Sum(MT.target_Amt)
FROM [CRM].[tblMktArea_Target] MT JOIN CRM.tblMarketingArea MA ON
MA.mkt_Area_ID = MT.mkt_Area_ID
WHERE month IN (05,04) AND
year = 2013 AND
MA.mkt_Area_ID = 1 AND
MA.mkt_Reg_ID = 1
GROUP BY MT.mktcate_id
列
MT.mkt_Area_ID和MA.mkt_Reg_ID
在最终结果集中是否重要?只需从select中删除group by语句中不包含的额外列即可。删除MT.mkt\u区域ID,MA.mkt\u注册ID,MT.year
@Meherzad我需要结果中的MT.mkt\u区域ID,MA.mkt\u注册IDset@JW웃 对我需要他们的结果