同时使用Union和Order by问题(ORA-00933错误)解决
之前,同事在编写视图的过程中遇到这样了这个错误。我把简化后的语句整理如下:
1: select
2: '2016' as nf,
3: qxdm,
4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'
6: group by m.qxdm order by m.qxdm
7:
8: union all
9:
10: select
11: '2017' as nf,
12: qxdm,
13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'
15: group by n.qxdm order by n.qxdm
主要是查询各个管辖区中2016年和2017年地类图斑数据中城市用地的面积,语句分单块均可以执行成功,但是使用UNION后则出现ora-00933错误。
检查了列的数量、数据格式均保持一致,没有不对应的现象。
追查了一下原因,最终发现是union和order by字句引起的。
最终处理方式参考如下:
1、如果排序没必要,可以直接去掉,或者在union后统一排序
1: select
2: '2016' as nf,
3: qxdm,
4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'
6: group by m.qxdm
7:
8: union all
9:
10: select
11: '2017' as nf,
12: qxdm,
13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'
15: group by n.qxdm
或者
1: select
2: '2016' as nf,
3: qxdm,
4: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
5: from dltb_2016@dblink_td_tdxz m where dlmc='城市'
6: group by m.qxdm
7:
8: union all
9:
10: select
11: '2017' as nf,
12: qxdm,
13: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
14: from dltb_2017@dblink_td_tdxz n where dlmc='城市'
15: group by n.qxdm order by qxdm
2、可以再嵌套一层查询
1: select * from (
2: select
3: '2016' as nf,
4: qxdm,
5: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
6: from dltb_2016@dblink_td_tdxz m where dlmc='城市'
7: group by m.qxdm order by m.qxdm
8: )
9:
10: union all
11:
12: select * from (
13: select
14: '2017' as nf,
15: qxdm,
16: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
17: from dltb_2017@dblink_td_tdxz n where dlmc='城市'
18: group by n.qxdm order by n.qxdm
19: )
或者
1: with
2: s1 as (
3: select
4: '2016' as nf,
5: qxdm,
6: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
7: from dltb_2016@dblink_td_tdxz m where dlmc='城市'
8: group by m.qxdm order by m.qxdm
9: ),
10: s2 as (
11: select
12: '2017' as nf,
13: qxdm,
14: round(sum(tbdlmj)/10000,2) as csydmj--单位转换,2位小数
15: from dltb_2017@dblink_td_tdxz n where dlmc='城市'
16: group by n.qxdm order by n.qxdm
17: )
18: select * from s1
19: union all
20: select * from s2;
同时使用Union和Order by问题(ORA-00933错误)解决的更多相关文章
- 让UNION与ORDER BY并存于SQL语句当中
在SQL语句中,UNION关键字多用来将并列的多组查询结果(表)合并成一个结果(表),简单实例如下: SELECT [Id],[Name],[Comment] FROM [Product1] UNIO ...
- mysql 错误 1221 Incorrect usage of union and order by
今天有个项目出现了问题 问题原因是union和order by 的问题.关于这个问题的解决方案可以猛击下面的链接. http://blog.csdn.net/gtuu0123/article/deta ...
- ORA-00933 UNION 与 ORDER BY
原文:http://blog.csdn.net/lwei_998/article/details/6093807 The UNION operator returns only distinct ro ...
- mysql中的union和order by、limit
我有一个表 CREATE TABLE `test1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) N ...
- MySQL中union和order by一起使用的方法
MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...
- MySql union与order by
[MySql union与order by] 如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放 ...
- MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
我在一个业务中采用了按月的分表策略,当查询的条件跨月的时候,使用了union all汇总2个表的数据,并按插入时间倒序排列.查询并不复杂,但是当执行的时候却报错了. SELECT * FROM `ta ...
- union 和order by 使用时排序不正确
静态专题和APP版专题(order by不起作用): [query] sql=(select sp_f13577,sp_f13576 from sp_t113 where url_1 not like ...
- mysql Incorrect usage of UNION and ORDER BY 错误备忘
出现这个错误的语句是酱紫的 select xxx from aaa order by xxx union all select yyy from bbb order by yyy 错误原因居然是,如果 ...
随机推荐
- PAT基础6-6
6-6 求单链表结点的阶乘和 (15 分) 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( ...
- JAVA分词包
自然语言处理 中文分词 词性标注 命名实体识别 依存句法分析 关键词提取 自动摘要 短语提取 拼音 简繁转换 http://www.hankcs.com/nlp/ https://github.com ...
- flask之flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- 配置gitlab通过smtp发送邮件
1. 编辑/etc/gitlab/gitlab.rb文件(加到文件最后面就好了,或者通过搜索找到,新版已有这些配置,只不过都是被注释掉了).以QQ企业邮箱为例: gitlab_rails['smtp_ ...
- .Net转Java.07.IDEA和VS常用操作、快捷键对照表
功能 IDEA 2017.1 快捷键 Visual Studio 2015 快捷键 文档 格式化整个文档 Ctrl+Alt+L Ctrl+E,D 或者 Ctrl+K,D 文件 显示最近的 ...
- HTTPS之acme.sh申请证书
1.关于let's encrypt和acme.sh的简介 1.1 let's encrypt Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安 ...
- html5使用canvas实现毫秒级画心电图
- Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- C# 中字符串转换成日期
我们在处理字符串日期格式常用DateTime.Pares() 但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231.那么类似 "20100101" ...
- CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)
用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...