Problem, o którym mówisz, jest również znany jako problem z plecakiem . Istnieje szereg algorytmów, których możesz użyć do rozwiązania tego problemu. Najbardziej znane jest programowanie dynamiczne, które wymaga, aby wagi były liczbami całkowitymi, więc trzeba by było mierzyć w centach. Żaden z nich nie jest łatwy do zaimplementowania w t-sql.
Znalazłem link do czyjejś implementacji na serwerze sql:http://sqlinthewild.co.za/index.php/2011/02/22/and-now-for-a-kompletnie-nieodpowiednie-uzycie- of-sql-server/
Zwróć uwagę na tytuł, oni również uważają to za niewłaściwe użycie bazy danych. Zalecam rozwiązanie tego w innym języku.