I guess my question has to do with a variant of the knapsack problem, but I can't really come up with a solution for this:

Let's say you are in a hardware store and need to buy 21 screws.
They only offer them in bags:

* Bag X - 16 Screws - 1.56$ per screw - 25$ Total
* Bag Y - 8 Screws - 2.25$ per screw - 18$ Total
* Bag Z - 4 Screws - 1.75$ per screw - 7$ Total

Now you have to figure out which Bags you should buy to get your 21 screws (or more!) for the lowest possible price.

So what I got is a table with all the bags and a variable to define the required amount. What I need as a result should be a table with the bagname and the required amount.

Unfortunately sqlfiddle is down.. But at least here's the example data:

```
declare @bags table (id int, qty int, price decimal(19,4))
insert into @bags values
 (10, 16, 25.00)
,(20, 8, 18.00)
,(30, 4, 7.00)

declare @ReqQty int = 21

```

I really appreciate your help! Hope we can get this solved, as I need to customize our companys ERP System with this important function.

Thank you in advance!

Edit:
I read the whole wikipedia article about knapsack and there it says:
**Overfill approximation algorithm**
It may be possible to generate an approximation algorithm where we can slightly overflow the allowed weight limit. You would want to achieve at least as high a total value as the given bound B, but you're allowed to exceed the weight limit...
**Currently the solution is unknown for this approximation algorithm.**

So it seems I better use a greedy algorithm instead of inventig the wheel? ;)