谢谢楼上兄弟,事情其实并不是这样简单啊,因为每行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呵呵,方法是不是挺笨拙啊,还有没有别的方法呢? 如果按照我的思路,那怎样插入临时表呀?望各位老大多多指点
mgsray(我是新新新新,新来的吧)说的没错,你自己试试就可以了,结果完全正确.
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
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的,如果这样不对 --请根据以上的数据,给出你想的结果
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呵呵,方法是不是挺笨拙啊,还有没有别的方法呢?
如果按照我的思路,那怎样插入临时表呀?望各位老大多多指点
(select x*c1 as c1,x*c2 as c2,x*c3 as c3,x*c4 as c4 from Tab) a
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的,如果这样不对
--请根据以上的数据,给出你想的结果
mgsray(我是新新新新,新来的吧) 你的方法也给了我别的启示,不过太复杂了点 呵呵
加分加分。