Come posso selezionare solo alcune righe nella seguente tabella in modo che riassumano un determinato valore?SQL seleziona alcune righe in una tabella in modo che sommano fino a un determinato valore
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
Diciamo, il valore alto che voglio è 57 ...
quindi ho bisogno di selezionare le righe della tabella precedente in modo tale che qty1 + qty2 + qty3 + qty4 di ogni riga, ottenere fino quel valore 57 e scartare le altre righe. In questo esempio, vorrei avere il seguente:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
Perché 10 + 20 + 1,5 + 7,5 + 18 = 57, quindi scartare le righe 3 & 4 ...
Ora vorrei che la parte superiore valore è 50, quindi dovrei ottenere:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 11
poiché questi valori si sommano a 50, e il 7 da row2, qty4 è lasciato fuori ... (BTW le file sono ordinate in questo particolare modo perché questo è l'ordine in cui desidero rendere conto delle somme di qtys ... Non è valido riassumere prima r ow1, quindi 3, poi 2 poi 4, ad esempio ... Dovrebbero sempre essere ordinati nell'ordine 1,2,3,4 ...)
E se desiderassi il completamento di questo? Voglio dire, le altre due file che non ho avuto nell'ultimo risultato.
Primo caso:
id | qty1 | qty2 | qty3 | qty4
------------------------------
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
Secondo caso:
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
(Se il secondo caso è troppo complicato, come su come ottenere:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
Perché sommando le qtys originali della riga 2 supererebbe il valore 50, lo scarterei ... Il complemento in questo caso dovrebbe essere solo:
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
)
ho scritto un sacco di query complesse, e mi piace assumendo una sfida, ma questo è uno di quei rari casi che chiede solo per voi a scrivere codice procedurale nella lingua che preferisci. –
anche per il secondo caso semplificato? gli ultimi tra parentesi alla fine del post ...? –
Il secondo caso semplificato è fattibile come una query. Se modifichi la tua domanda per chiederlo (o crea una nuova domanda che ti chieda solo questo), posso aiutarti. –