Sql server 使用计数和不同分组避免sql中的并集
我举了一个简单的例子来说明我要实现的目标,我希望避免使用UNION,因为: 1-我需要9个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
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
?是的,看起来很简单,我不知道这个函数存在!正是我在寻找的,我没有机会进行常规搜索,谢谢你的快速回答!