假设我有一个数据表,看起来像:
ItemNo | ItemCount | Proportion
------------------------------------------
1 3 0.15
2 2 0.10
3 3 0.15
4 0 0.00
5 2 0.10
6 1 0.05
7 5 0.25
8 4 0.20
换句话说,共有20个项目,每个
ItemNo
的累积比例之和为100%。表行的顺序在这里很重要。是否可以执行不带循环或游标的SQL查询,以返回超过累积比例的第一个
ItemNo
?换句话说,如果我要检查的“比例”是35%,则超出的第一行是
ItemNo 3
,因为0.15 + 0.10 + 0.15 = 0.40类似地,如果我想找到第一行超过75%的行,那就是
ItemNo 7
,因为直到该行的所有Proportion
的总和都小于0.75。 最佳答案
select top 1
t1.ItemNo
from
MyTable t1
where
((select sum(t2.Proportion) from MyTable t2 where t2.ItemNo <= t1.ItemNo) >= 0.35)
order by
t1.ItemNo