I know how to select TOP X random rows from a table using NEWID(). Separately, I know how to select a running total using several methods, CTE, etc.BUT, how would one combine these 2 results into one query? So I want to select say 3 random records (AND no less than 3), where the running total does not exceed 15. Can't wrap my head around this one... Use this simple table and data:CREATE TABLE TblTest ( id int not null identity(1,1) primary key, value int not null);INSERT INTO TblTest (value) VALUES (4);INSERT INTO TblTest (value) VALUES (3);INSERT INTO TblTest (value) VALUES (5);INSERT INTO TblTest (value) VALUES (6);INSERT INTO TblTest (value) VALUES (6);INSERT INTO TblTest (value) VALUES (5);INSERT INTO TblTest (value) VALUES (6);INSERT INTO TblTest (value) VALUES (5);INSERT INTO TblTest (value) VALUES (4);INSERT INTO TblTest (value) VALUES (7);INSERT INTO TblTest (value) VALUES (7);INSERT INTO TblTest (value) VALUES (6);INSERT INTO TblTest (value) VALUES (5);INSERT INTO TblTest (value) VALUES (4);My Attempt is below, not sure if it even makes sense having the NEWID there, and sometimes it returns only 2 rows, sometimes 0, I want it to be smart enough to return always 3 rows, and if possible, closest to 15...:select ourRandID, id, value, running_totalfrom ( select NEWID() as ourRandID, id, value, sum(value) over (order by NEWID()) as running_total from TblTest) twhere running_total < 16
↧