汇总销售数据

时间:2019-01-22 17:13:05

标签: sql

我有一张表格,显示每笔交易的地区,年,月和销售额。我需要按月和地区合并交易,因此它将返回每个地区的月度销售清单。当我使用group by命令时,它将返回以下错误消息。 消息8120,第16级,状态1,第1行 在选择列表中,“ sales.SalesTerritory.Name”列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

SELECT name as TerritoryName,
datepart(yy,soh.OrderDate)as Year,
datepart(MM,soh.orderdate) as Month, 
round(SubTotal,0) as SalesRevenue
FROM Sales.SalesOrderHeader soh
inner join sales.SalesTerritory st
on soh.territoryID = st.territoryid
where datepart(YYYY,soh.OrderDate) = 2013
group by datepart(Month,soh.OrderDate)

1 个答案:

答案 0 :(得分:0)

GROUP BY子句中未提及的所有列都必须由MIN()MAX()AVG()等任何“聚合函数”进行聚合。

就您而言,我想您忘了在GROUP BY子句的末尾添加了一些列。我认为它应该像这样:

SELECT name as TerritoryName,
datepart(yy,soh.OrderDate)as Year,
datepart(MM,soh.orderdate) as Month, 
round(SubTotal,0) as SalesRevenue
FROM Sales.SalesOrderHeader soh
inner join sales.SalesTerritory st
on soh.territoryID = st.territoryid
where datepart(YYYY,soh.OrderDate) = 2013
group by
  datepart(yy,soh.OrderDate), -- added
  datepart(MM,soh.orderdate), 
  name -- added