之前,同事在编写视图的过程中遇到这样了这个错误。我把简化后的语句整理如下:

   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错误)解决的更多相关文章

  1. 让UNION与ORDER BY并存于SQL语句当中

    在SQL语句中,UNION关键字多用来将并列的多组查询结果(表)合并成一个结果(表),简单实例如下: SELECT [Id],[Name],[Comment] FROM [Product1] UNIO ...

  2. mysql 错误 1221 Incorrect usage of union and order by

    今天有个项目出现了问题 问题原因是union和order by 的问题.关于这个问题的解决方案可以猛击下面的链接. http://blog.csdn.net/gtuu0123/article/deta ...

  3. ORA-00933 UNION 与 ORDER BY

    原文:http://blog.csdn.net/lwei_998/article/details/6093807 The UNION operator returns only distinct ro ...

  4. mysql中的union和order by、limit

      我有一个表 CREATE TABLE `test1` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(20) N ...

  5. MySQL中union和order by一起使用的方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...

  6. MySql union与order by

    [MySql union与order by] 如果您想使用ORDER BY或LIMIT子句来对全部UNION结果进行分类或限制,则应对单个地SELECT语句加圆括号,并把ORDER BY或LIMIT放 ...

  7. MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)

    我在一个业务中采用了按月的分表策略,当查询的条件跨月的时候,使用了union all汇总2个表的数据,并按插入时间倒序排列.查询并不复杂,但是当执行的时候却报错了. SELECT * FROM `ta ...

  8. union 和order by 使用时排序不正确

    静态专题和APP版专题(order by不起作用): [query] sql=(select sp_f13577,sp_f13576 from sp_t113 where url_1 not like ...

  9. mysql Incorrect usage of UNION and ORDER BY 错误备忘

    出现这个错误的语句是酱紫的 select xxx from aaa order by xxx union all select yyy from bbb order by yyy 错误原因居然是,如果 ...

随机推荐

  1. PAT基础6-6

    6-6 求单链表结点的阶乘和 (15 分) 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( ...

  2. JAVA分词包

    自然语言处理 中文分词 词性标注 命名实体识别 依存句法分析 关键词提取 自动摘要 短语提取 拼音 简繁转换 http://www.hankcs.com/nlp/ https://github.com ...

  3. flask之flask-script组件

    Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...

  4. 配置gitlab通过smtp发送邮件

    1. 编辑/etc/gitlab/gitlab.rb文件(加到文件最后面就好了,或者通过搜索找到,新版已有这些配置,只不过都是被注释掉了).以QQ企业邮箱为例: gitlab_rails['smtp_ ...

  5. .Net转Java.07.IDEA和VS常用操作、快捷键对照表

      功能 IDEA 2017.1 快捷键   Visual Studio 2015 快捷键 文档 格式化整个文档 Ctrl+Alt+L   Ctrl+E,D 或者 Ctrl+K,D  文件 显示最近的 ...

  6. HTTPS之acme.sh申请证书

    1.关于let's encrypt和acme.sh的简介 1.1 let's encrypt Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安 ...

  7. html5使用canvas实现毫秒级画心电图

  8. Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法

    今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...

  9. C# 中字符串转换成日期

    我们在处理字符串日期格式常用DateTime.Pares() 但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231.那么类似 "20100101" ...

  10. CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)

    用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...