如何才能在下表中選擇一些行,以便它們總計爲某個值?SQL選擇表中的某些行,以便它們總計爲某個值
Table
-----
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
比方說,前值我要的是57 ...
所以我需要從上表中選擇行這樣qty1 + qty2 + qty3 +每一行的qty4,直到獲得那57值,並放棄其他行。在這個例子中,我會得到以下:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
因爲10 + 20 + 1.5 + 7.5 + 18 = 57,所以丟棄行3 & 4 ...
現在我希望頂值是50,那麼我應該得到:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 11
因爲這些值總和爲50,並從ROW2 7,qty4被冷落...... (BTW行以這種特別的方式訂購,因爲這是我希望說明qtys的總和的順序......總結第一個r是無效的ow1,然後3,然後2然後4,例如...他們應該總是按順序1,2,3,4 ...)
如果我想補充這個?我的意思是,其他兩行我沒有得到最後的結果。
第一種情況:
id | qty1 | qty2 | qty3 | qty4
------------------------------
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
第二種情況:
id | qty1 | qty2 | qty3 | qty4
------------------------------
2 | 0.0 | 0.0 | 0.0 | 7
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
(如果第二種情況過於複雜,如何獲取如何:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
因爲添加了原來qtys第2行將超過50的值,我放棄它... 在這種情況下的補充應該僅僅是:
id | qty1 | qty2 | qty3 | qty4
------------------------------
2 | 1.5 | 0.0 | 7.5 | 18
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
)
我已經寫了很多複雜的查詢,我喜歡承擔一個挑戰,但這是那些只是乞求你寫程序代碼少見的情況用你選擇的語言。 – 2012-03-01 23:40:18
即使是簡化的第二種情況?在帖子末尾括號中的最後一個......? – 2012-03-01 23:41:42
簡化的第二種情況可作爲查詢使用。如果你修改你的問題來問這個問題(或者創建一個新的問題,那就要求),我可以提供幫助。 – 2012-03-01 23:54:06