求一条 处理效率高的 多级查询 且带运算的 sql语句
1.
select cd1.cInvcode, sum(cd1.iquantity) as SumNum
from inventory cd0,currentstock cd1 where cd1.cInvcode =
cd0.cInvcode
group by cd1.cInvcode
通过以上语句 得到 虚拟表(若命名别名为:kk) 中
kk.cInvCode, kk.SumNum 这两个字段的内容
表的字段有: | kk.cInvCode | kk.SumNum |
2. 表 Inventory(别名为In) 中 的字段有 cInvCode, iTopSum(上限数量),
iLowSum(下线数量),cInvName
要求:
当 虚拟表kk 和 表 Inventory 中的 (In.cInvCode=kk.cInvCode)字段相等时对应
的记录时的:
比较 kk.SumNum 和 iTopSum(上限数量), iLowSum(下线数量) 的差值
,条件 a,b 满足其中一个条件.
a:如果: kk.SumNum > In.iTopSum 得到: (kk.SumNum - In.iTopSum) 的值;
b:如果: kk.SumNum < In.iLowSum 得到: (In.iLowSum - kk.SumNum) 的值;
最后得到显示表的结果是:
表的字段有: | cInvCode | cInvName | SumNum | iTopSum | iLowSum |
能不能通过 sql语句实现呢?
------解决方案--------------------
描述得太乱
select
i.cInvCode,i.cInvName,t.SumNum,i.iTopSum,i.iLowSum,
case when t.SumNum > I.iTopSum then t.SumNum - I.iTopSumor else i.iLowSum-t.SumNum end as 差值
from Inventory i,
(
select cd1.cInvcode, sum(cd1.iquantity) as SumNum
from inventory cd0,currentstock cd1 where cd1.cInvcode =
cd0.cInvcode
group by cd1.cInvcode
) as t
where i.cInvCode=t.cInvCode
and t.SumNum > I.iTopSum or t.SumNum < i.iLowSum)