Rumah >pangkalan data >tutorial mysql >Bolehkah Penyata CASE MySQL Mengasingkan Jumlah Transaksi ke Lajur Pendapatan dan Perbelanjaan?

Bolehkah Penyata CASE MySQL Mengasingkan Jumlah Transaksi ke Lajur Pendapatan dan Perbelanjaan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-02 12:52:40373semak imbas

Can MySQL's CASE Statement Separate Transaction Amounts into Income and Expense Columns?

Mengisi Lajur Secara Bersyarat dalam MySQL Menggunakan Penyata KES

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!

Kenyataan:
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