Det problem, du henviser til, er også kendt som knapsackproblemet . Der er en række algoritmer, du kan bruge til at løse dette. Den mest kendte er dynamisk programmering, det kræver, at vægtene er heltal, så du bliver nødt til at måle i cents. Ingen af dem er nemme at implementere i t-sql.
Jeg fandt faktisk et link til nogens implementering i sql-serveren:http://sqlinthewild.co.za/index.php/2011/02/22/and-now-for-a-completely-inappropriate-use- af-sql-server/
Læg mærke til titlen, de finder det også en upassende brug af en database. Jeg vil anbefale, at du løser dette på et andet sprog.