Sql server 使用计数和不同分组避免sql中的并集

Sql server 使用计数和不同分组避免sql中的并集,sql-server,group-by,union,Sql Server,Group By,Union,我举了一个简单的例子来说明我要实现的目标,我希望避免使用UNION,因为: 1-我需要9个 2-这会使我的查询速度变慢 3-维护将更加困难,更容易忘记更改9个选项中的一个 create table #temp (SA varchar(12), Area varchar(12), Style int) insert into #temp values ('GA1','GA',2),('GA1','GA',5),('GA2','GA',6), ('GA2','GA',7),('CA1','CA',3

我举了一个简单的例子来说明我要实现的目标,我希望避免使用UNION,因为:

1-我需要9个
2-这会使我的查询速度变慢
3-维护将更加困难,更容易忘记更改9个选项中的一个

create table #temp (SA varchar(12), Area varchar(12), Style int)
insert into #temp values ('GA1','GA',2),('GA1','GA',5),('GA2','GA',6),
('GA2','GA',7),('CA1','CA',3),('CA2','CA',2)

select  area, sa, avg (style) Average, count(*) Number from #temp
group by  area, sa
Union
select  area, NULL as sa, avg (style) Average, count(*) Number from #temp
group by area
此查询的目标是将其放在视图中,因此不允许使用动态代码


任何帮助都将不胜感激。

使用
汇总
您可以获得结果<代码>汇总生成一个结果集,显示所选列中值层次结构的聚合。试试这个

SELECT *
FROM   (SELECT area,
               sa,
               Avg (style) Average,
               Count(*)    Number
        FROM   #temp
        GROUP  BY rollup ( area, sa )) a
WHERE  area IS NOT NULL 

所以,
按区域分组,使用汇总的sa
?是的,看起来很简单,我不知道这个函数存在!正是我在寻找的,我没有机会进行常规搜索,谢谢你的快速回答!