语句的目的是:查询出所有明细之后,在最后一行加上汇总行。
sql语句大概是这样:
select * from
(
select a1,a2 from table1    (单独执行出来是58条记录)
union
select sum(a1),sum(a2) from table1   (单独执行出来是1调记录)
)as aaa                     (整条语句执行出来超过1000条记录)请帮忙指点,是什么原因,要怎么写才对

解决方案 »

  1.   

    直接运行这个有多少数据select a1,a2 from table1 
    union all
    select sum(a1),sum(a2) from table1
      

  2.   

    应该执行:select a1, a2 from table1
    union all 
    select sum(a1), sum(a2) from table1
      

  3.   

    select * from
    (
    select a1,a2 from table1 (单独执行出来是58条记录)
    union
    select sum(a1),sum(a2) from table1 (单独执行出来是1调记录)
    )as aaa (整条语句执行出来超过1000条记录)
    你这样写能够正确执行?????
      

  4.   


    这个  应该会报错吧  如果还要联合其他表的话 直接取个别名
    select * from
    (
    select a1,a2 from table1 
    union all
    select sum(a1),sum(a2) from table1
    ) a,table2 b
    where ...
      

  5.   

    为了贴出来就简化了很多,没有语法错误,运行是可以的,
    主要是纠结于用了union(union all)后出来的结果多了很多记录
      

  6.   

    完整可以执行的语句:
    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
      

  7.   

    第一句执行还是58条,第二句执行还是1条 合并执行达到2000多条,怎么会呢???没关联其他表吧?
    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)
      

  8.   

    正常情况下union all 下肯定是58+1 ,相信是楼主关联其它表了吧。
    其实这种:最后一行是汇总行的,最好用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)这样也可以达到楼主想要的效果。
      

  9.   

    用With 来做
    with tmpdata as (
    select a1,a2 from table1 )
    select * from tmpdata
    union all
    select sum(tmpdata.a1),sum(tmpdata.a2) from tmpdata