Rumah > pangkalan data > tutorial mysql > Bagaimana Menjumlahkan Nilai Tunai dalam SQL Berdasarkan Keadaan Bulanan?

Bagaimana Menjumlahkan Nilai Tunai dalam SQL Berdasarkan Keadaan Bulanan?

Barbara Streisand
Lepaskan: 2024-12-23 15:41:15
asal
557 orang telah melayarinya

How to Sum Cash Values in SQL Based on a Monthly Condition?

Jumlah SQL dengan Syarat (Termasuk Pengiraan Berdasarkan Bulan)

Anda mempunyai penyata SQL yang besar yang mengira jumlah tunai untuk setiap transaksi unik ID menggunakan baris berikut:

select sum(cash) from Table a where a.branch = p.branch 
and a.transID = p.transID) TotalCash
Salin selepas log masuk

Kini, anda perlu mengubah suai penyata kepada jumlah nilai tunai sahaja yang mempunyai ValueDate dalam bulan lepas. Berikut ialah penyelesaian:

select sum(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END) 
from Table a where a.branch = p.branch 
and a.transID = p.transID) TotalMonthCash
Salin selepas log masuk

Penjelasan

Pernyataan CASE menggunakan sintaks ungkapan CASE yang dicari untuk menilai ungkapan Boolean (dalam kes ini, WHEN ValueDate > @ startMonthDate) dan kembalikan hasil yang sepadan (di sini, tunai). Jika syarat tidak dipenuhi, ia akan mengembalikan 0 sebaliknya.

Petua Pengoptimuman

Jika prestasi membimbangkan, pertimbangkan untuk menggunakan JOIN dan GROUP BY dan bukannya subquery bergantung untuk kecekapan yang lebih baik.

Atas ialah kandungan terperinci Bagaimana Menjumlahkan Nilai Tunai dalam SQL Berdasarkan Keadaan Bulanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan