品名 数量 金额
手枪 2 100
手枪 2 100
步枪 1 200
步枪 1 200
冲锋枪 1 300
冲锋枪 1 300
执行 select max(品名),sum(数量),sum(金额) from table group by 品名
形成以下记录集 品名 数量 金额
手枪 4 200
步枪 2 400
冲锋枪 2 600 现在想形成这样的记录,不会写了,求教,谢谢!
品名 数量 金额 总数量 总金额
手枪 4 200 8 1200
步枪 2 400 8 1200
冲锋枪 2 600 8 1200

解决方案 »

  1.   

    select
        a.*,b.*
    from    
        (select max(品名) 品名,sum(数量) 数量, sum(金额) 金额 from table group by 品名) a,
        (select sum(数量) 总数量,sum(金额) 总金额 from table )b
    where 1=1
      

  2.   

    select 品名,sum(数量),sum(金额),sum(sum(数量)) over(), sum(sum(金额)) over() from table group by 品名
      

  3.   

    问个弱弱的问题,  over() 函数 什么意思?
      

  4.   

    分析函数
    http://218.94.123.17/viewthread.php?tid=31313&highlight=%B7%D6%CE%F6%BA%AF%CA%FD
      

  5.   

    select distinct name , m_number ,cost ,
    sum ( m_number ) over(partition by name order by name ) ,
    sum (cost) over(partition by name order by name )
    from temp_m2