Làm cách nào tôi có thể chọn chỉ một số hàng trong bảng sau để tổng hợp giá trị nhất định?SQL chọn một số hàng trong bảng sao cho tổng hợp giá trị nhất định
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
Hãy nói rằng, giá trị đầu tôi muốn là 57 ...
Vì vậy, tôi cần phải lựa chọn các hàng từ bảng trước đó rằng qty1 + qty2 + qty3 + qty4 của mỗi hàng, có được cho đến khi giá trị 57 đó và loại bỏ các hàng khác. Trong ví dụ này, tôi sẽ nhận được như sau:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
Bởi vì 10 + 20 + 1,5 + 7,5 + 18 = 57, vì vậy tôi loại bỏ hàng 3 & 4 ...
Bây giờ tôi mong rằng đầu giá trị là 50, sau đó tôi sẽ nhận được:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 11
vì các giá trị tổng hợp lên đến 50, và 7 từ row2, qty4 được bỏ qua ... (BTW các hàng được sắp xếp theo cách đặc biệt này bởi vì đó là thứ tự mà tôi muốn tính cho số tiền qty ... Nó không hợp lệ để tổng hợp đầu tiên r ow1, sau đó 3, sau đó 2 rồi 4, ví dụ ... Chúng phải luôn được tính theo thứ tự 1,2,3,4 ...)
Nếu tôi muốn bổ sung điều này thì sao? Ý tôi là, hai hàng còn lại tôi không có trong kết quả cuối cùng.
trường hợp đầu tiên:
id | qty1 | qty2 | qty3 | qty4
------------------------------
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
Thứ hai trường hợp:
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
(Nếu trường hợp thứ hai là quá phức tạp, làm thế nào về việc thu thập:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
Bởi vì thêm lên qtys gốc của hàng 2 sẽ vượt quá giá trị 50, tôi loại bỏ nó ... Bổ sung trong trường hợp này nên chỉ là:
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
)
Tôi đã viết rất nhiều truy vấn phức tạp, và tôi thích tham gia vào một thách thức, nhưng đây là một trong những trường hợp hiếm hoi mà chỉ đặt ra để bạn có thể viết mã thủ tục bằng ngôn ngữ bạn chọn. –
ngay cả đối với trường hợp thứ hai được đơn giản hóa? những cái cuối cùng trong dấu ngoặc đơn ở cuối bài đăng ...? –
Trường hợp thứ hai được đơn giản hóa có thể thực hiện được dưới dạng truy vấn. Nếu bạn sửa đổi câu hỏi của mình để yêu cầu điều đó (hoặc tạo một câu hỏi mới chỉ yêu cầu), tôi có thể giúp bạn. –