SELECT Sum(c1*x) AS s1, Sum(c2*x) AS s2, Sum(c3*x) AS s3, Sum(c4*x) AS s4 From Tab

解决方案 »

  1.   

    谢谢楼上兄弟,事情其实并不是这样简单啊,因为每行x的值都不一定相同的。我的思路:
    SELECT x, Sum(c1*x) AS s1, Sum(c2*x) AS s2, Sum(c3*x) AS s3
    From Tab
    GROUP BY x;
    然后将s1,s2,s3...插入一个临时表中,之后再Select sum(s1) as y1, ... from tmptable呵呵,方法是不是挺笨拙啊,还有没有别的方法呢?
    如果按照我的思路,那怎样插入临时表呀?望各位老大多多指点
      

  2.   

    mgsray(我是新新新新,新来的吧)说的没错,你自己试试就可以了,结果完全正确.
      

  3.   

    select sum(c1),sum(c2),sum(c3),sum(c4) from
    (select x*c1 as c1,x*c2 as c2,x*c3 as c3,x*c4 as c4 from Tab) a
      

  4.   

    create table tab(ID int , x int , c1 int , c2 int , c3 int , c4 int)
    insert tab select 
        1,   5,  20,  20,  30,  15 union select
        2,  15,  10,  20,  20,  55 union select
        3,   8,  22,  20,  30,  15SELECT Sum(c1*x) AS s1, Sum(c2*x) AS s2, Sum(c3*x) AS s3, Sum(c4*x) AS s4 From Tab
    --结果
    s1          s2          s3          s4          
    ----------- ----------- ----------- ----------- 
    426         560         690         1020(所影响的行数为 1 行)--楼主觉得这样的数据有问题吗?我做的就是每行记录根据不同x进行计算的啊,然后sum的,如果这样不对
    --请根据以上的数据,给出你想的结果
      

  5.   

    谢谢楼上两位!cloudchen(cloudchen)的方法效率最好,
    mgsray(我是新新新新,新来的吧) 你的方法也给了我别的启示,不过太复杂了点 呵呵
    加分加分。