某表中有int字段money,求在一条sql中可以查询出所有money和sum(money) id  money 
1  10.00 
2  15.00 
3  15.00 希望查询出来的结果是 
id  money  sum 
1  10.00  40.00 
2  15.00  40.00 
3  15.00  40.00我使用
select id,money,sum(money) over()
from table
语句可以查询出想得到的结果,可将语句加到创建的视图内后,sum得到的结果是全表的money和,并没有收到where id = ?的限制,请问该如何解决?

解决方案 »

  1.   

    create or replace view vie_name
    as
    select id,money,(select sum(money) from table) sum
    from table
      

  2.   


    create or replace view vie_name 
    as 
    select id,money,sum(money)  from table 
      

  3.   

    select id,money,sum(money) as summoney over() 
    from (select id,money from table where id=?)
      

  4.   


    SELECT ID,MONEY,(SELECT SUM(MONEY) FROM T) SUM1
    FROM T 
      

  5.   


    create or replace view vie_name 
    as 
    select id,money,sum(money) over() from table 
      

  6.   


    这个直观。不过既然啊是比较明确的sum,没有必要用over,除非是每个都不通,
    否则直接
    create or replace view vie_name
      as 
        select a.id,a.money,b.ttl_money  from  table a ,
               (select nvl(sum(money),0) ttl_money from table ) b ;
    我想会更快一些。
      

  7.   

    create or replace view vie_name 
    as 
    select id,money,sum(money)  from table  group by id,money
      

  8.   

    create or replace view vie_name
    as
    select id,money,(select sum(money) from table where id=?) sum
    from table 
    经过测试是通过的。