首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

怎么按需要拼两个SQL

2013-07-04 
如何按需要拼两个SQL?一个表 ASELECT * FROM A where qfrq201303 order by org asc显示 例如:aorgqfrq1

如何按需要拼两个SQL?
一个表 A
SELECT * FROM A where qfrq='201303' order by org asc
显示 例如:
a    org            qfrq
1   220001         201303
5   220002         201303
4   220003         201303
2   220004         201303
12   TO            201303

qfrq相同的 都会有个org=TO ,为合计 ,比如 12=1+5+4+2
A表要关联一个单位表,显示org名称
select a.*,b.mc   from A a,xt__org b  
where 1=1 and qfrq='201303' and a.org = b.orgid  order by org asc
现在要把org=TO 的也查询到,并放到第一行
这样写:
select a.*,'总计' MC  from A a where a.org='TO'  and qfrq='201303'
union
select a.*,b.mc   from A a,xt_auth_org b  
where 1=1 and qfrq='201303' and a.org = b.orgid  order by org asc

但提示 org 无效 ,应该是order by org asc 这的问题, 如果不加 order by org asc 可以查询到,
但 总计 不是第一行,并且其他的单位顺序是乱的,请问如何修改?
希望达到的效果例如:
a    org            qfrq     mc 
12   TO            201303    总计
1   220001         201303    城市A
5   220002         201303    城市B
4   220003         201303    城市C
2   220004         201303    城市D


[解决办法]
select a.*,b.mc   from A a,xt_auth_org b  


where 1=1 and qfrq='201303' and a.org = b.orgid  order by org asc
这段代码再嵌套一层不行么?
select * from (
select a.*,b.mc   from A a,xt_auth_org b  
where 1=1 and qfrq='201303' and a.org = b.orgid  order by org asc)
[解决办法]

引用:
org=TO 的如何放到第一行呢?


order by decode(org,'TO','随便找一个能排到前面的数据',org)
[解决办法]
ORACLE 最好放在最外层,放在里面有时排序是无效的,甚至有时是编译不能通过的

热点排行