表:
plan    pact     itemname    quantity
1         1        item1       100
1                  item1       100
1                  item2       100
1                  item2       100
1                  item3       100
求得结果:
plan    pact     itemname    quantity
1         1        item1       200
1         1        item2       200
1         1        item3       100请教sql该怎么写?数据库较冷清,所以在java版发,请大家帮下忙。谢谢!

解决方案 »

  1.   

    plan相同的记录才按item进行汇总
      

  2.   

    楼主试试:select plan,pact,itemname, sum(quantity) over(partition by itemname) quantity from tableName;
      

  3.   

    select plan,decode(pact,null,1,pact),itemname,sum(quantity) from tableName group by plan; 
      

  4.   

    select plan, pact, itemname, sum(quantity) frome tableName group by plan, pact, itemname;
      

  5.   


    SELECT t1.plan,t1.pact,t1.itemname,t2.sq quantity
    FROM table t1,
    (SELECT plan,itemname,SUM(quantity) sq FROM table GROUP BY plan,itemname) t2
    WHERE t1.plan=t2.plan AND t1.itemname=t2.itemname
    ORDER BY t1.plan,t1.itemname;
      

  6.   

    试试这个呢:select plan,decode(pact,null,1,pact),itemname,sum(quantity) from tableName group by plan,pact,itemname; 
      

  7.   


    select plac, pact, itemname, sum(quantity) from tablename group by itemname;猴子的不对,猴子把from写成frome
      

  8.   

    select plan, pact, itemname, sum(quantity) from tableName group by plan, pact, itemname;
    猴子的可以  
      

  9.   

    建议以后提 SQL 问题的时候,先说明用的是什么数据库!
      

  10.   

    不说明数据库的话,像 2 楼提供的是窗口函数的实现,目前只能在 Oracle 和 MS SQL Server 2005 以上的版本中使用,如果用的不是这些数据库,那 2 楼就等于白回了。因此,为了节省楼主和回复者的时间,提 SQL 问题的时候先说明用的是什么数据库。
      

  11.   


    在java中用的不都是标准的sql语言吗 ,好像和 哪个数据库没关吧
      

  12.   


    和数据库有关系,各个数据库的SQL语句语法上很多不一样.
      

  13.   

    数据库是oracle的。 是做报表的。 
    总之,oracle分析函数是了解了,也用上了。老想一个sql语句把报表解决,要换换思维才行。