Pesanan Tersuai dalam Oracle SQL: Mengutamakan Mata Wang
Apabila menanyakan data yang mengandungi transaksi dalam pelbagai mata wang, keperluan sering timbul untuk memesan keputusan berdasarkan pada keutamaan tersuai. Dalam senario khusus ini, keperluan adalah untuk meletakkan mata wang USD di bahagian atas pesanan, diikuti oleh mata wang lain yang diisih dalam tertib menaik.
Oracle SQL menyediakan beberapa kaedah untuk mencapai pesanan tersuai ini. Satu pendekatan melibatkan penggunaan ungkapan CASE, yang memberikan nilai berangka atau rentetan aksara kepada setiap mata wang:
order by case when currency = 'USD' then 1 when currency = 'BHT' then 2 when currency = 'JPY' then 3 when currency = 'MYR' then 4 else 5 end
Sebagai alternatif, fungsi DECODE boleh digunakan untuk melaksanakan pemetaan yang sama:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Walau bagaimanapun, kaedah ini bergantung pada penetapan mata wang secara jelas mengikut urutan keutamaan, yang boleh menjadi menyusahkan jika senarai mata wang adalah luas atau tertakluk kepada perubahan.
Untuk memastikan pesanan yang konsisten tanpa mengira bilangan atau jenis mata wang dalam data, pendekatan lain ialah menukar mata wang kepada nilai aksara dan menggunakan susunan abjad:
order by case when currency = 'USD' then '001' else currency end
Memandangkan aksara diisih selepas digit berangka, kaedah ini berkesan meletakkan USD di bahagian atas pesanan dan mengisih mata wang yang tinggal mengikut abjad.
Atas ialah kandungan terperinci Bagaimana untuk Mengutamakan Mata Wang USD dalam Pertanyaan SQL Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!