Rumah >pangkalan data >tutorial mysql >Bolehkah Penyata CASE MySQL Mengasingkan Jumlah Transaksi ke Lajur Pendapatan dan Perbelanjaan?
Soalan:
Memandangkan jadual pangkalan data yang mengandungi butiran transaksi, adakah ia mungkin untuk menjana dua lajur, "AMT Pendapatan" dan "AMT Perbelanjaan," yang memisahkan jumlah urus niaga berdasarkan sama ada mereka mewakili pendapatan atau perbelanjaan menggunakan pertanyaan SQL?
Penyelesaian:
Ya, menggunakan penyata CASE dalam MySQL, adalah mungkin untuk mengisi lajur secara bersyarat, memisahkan amaun berdasarkan "jenis_tindakan" yang difailkan.
Berikut ialah contoh pertanyaan untuk dicapai ini:
SELECT id, action_heading, CASE WHEN action_type = 'Income' THEN action_amount ELSE NULL END AS income_amt, CASE WHEN action_type = 'Expense' THEN action_amount ELSE NULL END AS expense_amt FROM tbl_transaction;
Pertanyaan ini menggunakan pernyataan CASE untuk menilai lajur "action_type". Jika "jenis_tindakan" ialah 'Pendapatan', ia memberikan nilai "jumlah_tindakan" kepada "pendapatan_amt" dan menetapkan "perbelanjaan_amt" kepada NULL. Sebaliknya, jika "jenis_tindakan" ialah 'Perbelanjaan', ia memberikan nilai "jumlah_tindakan" kepada "perbelanjaan_amt" dan menetapkan "pendapatan_amt" kepada NULL.
Seperti yang dinyatakan oleh responden, MySQL juga menyediakan IF( ) berfungsi sebagai alternatif kepada pernyataan CASE. Walau bagaimanapun, penyataan CASE lebih disukai kerana mudah alihnya merentas enjin pangkalan data yang berbeza berbanding dengan fungsi IF() khusus MySQL.
Atas ialah kandungan terperinci Bolehkah Penyata CASE MySQL Mengasingkan Jumlah Transaksi ke Lajur Pendapatan dan Perbelanjaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!