L
leo2002
Unregistered / Unconfirmed
GUEST, unregistred user!
现有数据结构如下:
a1,a2,a3,b1,b2,b3,c1,c2,c3均为整数型。其中关系如下:
a1为单价1,a2为单价2,a3为单价3
b1为数量1,b2为数量2,b3为数量3
c1,c2,c3为代码,假设c1为10,即表示将a1与b1的乘积放到代码为10的项目上。
现假设数据如下:(连续两个逗号表示无数据)
a1,a2,a3,b1,b2,b3,c1,c2,c3
1,2,3,1,1,1,,3,
1,2,3,1,1,1,,,3
1,2,3,1,1,1,3,2,1
请求:
如果上面c1,c2,c3字段的值不为空或为零,即将对应的aX与bX的乘积相加求和。如上例应为:
第一行:c2不为零,所以有:a2*b2=2
第二行:c3不为零,所以有:a3*b3=3
第三行:c1,c2,c3均不为零,所以有a1*a2+a2*b2+a3*b3=6
最后结果为11。
我想要的是:能求出上述结果的sql算法。
我的算法如下,但不能成功:
SELECT sum((c1>0)*a1*b1+(c2>0)*a2*b2+(c3>0)*a3*b3) FROM 表1;
不过只是计算特定代号的时候可以通过:
如:SELECT sum((c1=8)*a1*b1+(c2=8)*a2*b2+(c3=8)*a3*b3) FROM 表1;
恳请高手指点!(分不够可以再加!)
a1,a2,a3,b1,b2,b3,c1,c2,c3均为整数型。其中关系如下:
a1为单价1,a2为单价2,a3为单价3
b1为数量1,b2为数量2,b3为数量3
c1,c2,c3为代码,假设c1为10,即表示将a1与b1的乘积放到代码为10的项目上。
现假设数据如下:(连续两个逗号表示无数据)
a1,a2,a3,b1,b2,b3,c1,c2,c3
1,2,3,1,1,1,,3,
1,2,3,1,1,1,,,3
1,2,3,1,1,1,3,2,1
请求:
如果上面c1,c2,c3字段的值不为空或为零,即将对应的aX与bX的乘积相加求和。如上例应为:
第一行:c2不为零,所以有:a2*b2=2
第二行:c3不为零,所以有:a3*b3=3
第三行:c1,c2,c3均不为零,所以有a1*a2+a2*b2+a3*b3=6
最后结果为11。
我想要的是:能求出上述结果的sql算法。
我的算法如下,但不能成功:
SELECT sum((c1>0)*a1*b1+(c2>0)*a2*b2+(c3>0)*a3*b3) FROM 表1;
不过只是计算特定代号的时候可以通过:
如:SELECT sum((c1=8)*a1*b1+(c2=8)*a2*b2+(c3=8)*a3*b3) FROM 表1;
恳请高手指点!(分不够可以再加!)