Il problema a cui ti riferisci è anche noto come problema dello zaino . C'è una gamma di algoritmi che puoi usare per risolvere questo problema. La più nota è la programmazione dinamica, richiede che i pesi siano numeri interi, quindi dovresti misurare in centesimi. Nessuno di questi è facile da implementare in t-sql.
In realtà ho trovato un collegamento all'implementazione di qualcuno nel server sql:http://sqlinthewild.co.za/index.php/2011/02/22/and-now-for-a-completamente-inappropriato-use- di-sql-server/
Nota il titolo, anche loro lo trovano un uso inappropriato di un database. Ti consiglio di risolverlo in una lingua diversa.