SQL语句:使用了union all后怎么分组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句:使用了union all后怎么分组排序相关的知识,希望对你有一定的参考价值。

表在数据库结构如下:

代码:
declare @sql1 varchar(max)
set @sql1 = 'select certkey as ' + '公司名'
select @sql1 = @sql1 + ' , max(case hs_sortname when ''' + hs_sortname + ''' then weight else 0 end) [' + hs_sortname + ']'
from (select distinct hs_sortname from Sum1_View) as a
set @sql1 = @sql1 + ' ,sum(weight) 总计 from Sum1_View group by certkey'
declare @sql varchar(max)
set @sql = 'select certkey as ' + '公司名'
select @sql = @sql + ' , max(case hs_sortname when ''' + hs_sortname + ''' then usebox else 0 end) [' + hs_sortname + ']'
from (select distinct hs_sortname from Sum1_View) as a
set @sql = @sql + ' ,sum(usebox) 总计 from Sum1_View group by certkey'
set @sql = @sql1 + ' UNION ALL ' + @sql
exec(@sql)
结果如下:

问题:求sql语句实现公司名,分组排序
就按照公司名排序也可以啊!!

参考技术A

用子查询就能实现了

给你举个例子吧,要实现的功能你自己改

select a,b,c from (
    select a, b, c from aa
    union all 
    select a1 as a, b1 as b, c1 as c from bb
) a group by c

追问

有声明的怎么写?不太会

追答

和原来的一样,只是在原来的查询语句外面包上一层就可以了

追问

还是不太懂,举个例子啊

SQL语句中:UNION与UNION ALL的区别

UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复   union 是取唯一值,记录没有重复   
1、UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]

2、UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2]

效率:
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。

2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。


简要回答:
UNION去重且排序

UNION ALL不去重不排序
























以上是关于SQL语句:使用了union all后怎么分组排序的主要内容,如果未能解决你的问题,请参考以下文章

使用UNION后,ORDER BY 怎样使用

sql中union 和 union all的区别

ORACLE 两个order by的SQL使用 UNION 或者 UNION ALL 报错 ORA-00933:sql命令未正确结束

Union all和Union差别

sql 查询结果合并union all用法_数据库技巧

SQL union all 排序问题