由于您使用的是SQL Server 2012,因此这是一种无需循环的简单方法。
DECLARE @tbl TABLE(mDate DATE, Miles INT)INSERT @tbl VALUES('20120201', 520), ('20120312', 620),('20120313', 720), ('20120314', 560),('20120315', 380), ('20120316', 990),('20120317', 1020), ('20120412', 520);;WITH x AS ( SELECt mDate, Miles, s = SUM(Miles) OVER ( ORDER BY NEWID() ROWS UNBOUNDED PRECEDING ) FROM @tbl WHERe mDate >= '20120301' AND mDate < '20120401')SELECt mDate, Miles, sFROM x WHERe s <= 3250ORDER BY s;SQLfiddle演示-多次单击“运行SQL”以查看随机结果。



