语句的目的是:查询出所有明细之后,在最后一行加上汇总行。
sql语句大概是这样:
select * from
(
select a1,a2 from table1 (单独执行出来是58条记录)
union
select sum(a1),sum(a2) from table1 (单独执行出来是1调记录)
)as aaa (整条语句执行出来超过1000条记录)请帮忙指点,是什么原因,要怎么写才对
sql语句大概是这样:
select * from
(
select a1,a2 from table1 (单独执行出来是58条记录)
union
select sum(a1),sum(a2) from table1 (单独执行出来是1调记录)
)as aaa (整条语句执行出来超过1000条记录)请帮忙指点,是什么原因,要怎么写才对
解决方案 »
- Oracle存储过程中执行查询的问题
- ORA-01401: inserted value too large for column請求幫助
- 我在一台机器上有两个实例,我用exp导出数据时,可何指定导出那个实例数据库
- 急,我在把 Sql Server 数据库导入到 Oracle 时遇到问题了!
- 关于数据导入,导出,有这样一个疑问?
- 请大哥,高手们帮帮忙,分不够再加!!!!
- 急!急!我的ORACLE无法登陆了,大家帮忙呀!急!
- 高手请进 100份奉献
- 一个SQL语句的转换问题,求教(sybase>oracle)
- 急,oracle9i+win2003,进系统时因为网卡连接太慢导致oracleYTH服务启动失败
- oracle where and or问题
- 什么情况下,杀毒软件会报网购风险
union all
select sum(a1),sum(a2) from table1
union all
select sum(a1), sum(a2) from table1
(
select a1,a2 from table1 (单独执行出来是58条记录)
union
select sum(a1),sum(a2) from table1 (单独执行出来是1调记录)
)as aaa (整条语句执行出来超过1000条记录)
你这样写能够正确执行?????
这个 应该会报错吧 如果还要联合其他表的话 直接取个别名
select * from
(
select a1,a2 from table1
union all
select sum(a1),sum(a2) from table1
) a,table2 b
where ...
主要是纠结于用了union(union all)后出来的结果多了很多记录
select * from
(
select TRADABLE_MKT_VAL as col1 ,NON_TRADABLE_MKT_VAL as col2
from FVIEW.AGT_NONTRADABLE_CUST_STK_H
where BUSI_DATE = cast('2012-02-01' as date) union allselect sum(TRADABLE_MKT_VAL) ,sum(NON_TRADABLE_MKT_VAL)
from FVIEW.AGT_NONTRADABLE_CUST_STK_H
where BUSI_DATE = cast('2012-02-01' as date)
)as aa
select TRADABLE_MKT_VAL as col1 ,NON_TRADABLE_MKT_VAL as col2
from FVIEW.AGT_NONTRADABLE_CUST_STK_H
where BUSI_DATE = cast('2012-02-01' as date)
union all
select sum(TRADABLE_MKT_VAL) ,sum(NON_TRADABLE_MKT_VAL)
from FVIEW.AGT_NONTRADABLE_CUST_STK_H
where BUSI_DATE = cast('2012-02-01' as date)
其实这种:最后一行是汇总行的,最好用oracle中的分析函数。
上面的union all,查询的是表 AGT_NONTRADABLE_CUST_STK_H 查询了两遍,虽然这个sql简单,不会有性能问题。
select sum(col1),sum(col2) from (
select TRADABLE_MKT_VAL as col1 ,NON_TRADABLE_MKT_VAL as col2
from FVIEW.AGT_NONTRADABLE_CUST_STK_H
where BUSI_DATE = cast('2012-02-01' as date)
) t
GROUP BY ROLLUP(col1)这样也可以达到楼主想要的效果。
with tmpdata as (
select a1,a2 from table1 )
select * from tmpdata
union all
select sum(tmpdata.a1),sum(tmpdata.a2) from tmpdata