Không biết điều này có đủ điều kiện đơn giản hay không:
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
hoặc nhỏ gọn hơn một chút nhưng dành riêng cho Oracle:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
Giải pháp ở trên sử dụng các số để xác định thứ tự sắp xếp sẽ không tự động sắp xếp chính xác các đơn vị tiền tệ không được đề cập trong biểu thức viết hoa / giải mã.
Để chỉ cần đặt USD ở phía trước và không quan tâm đến phần còn lại, tiêu chí đặt hàng "được tạo" cũng phải là một giá trị ký tự. Bạn có thể sử dụng phần sau trong trường hợp đó:
order by
case
when currency = 'USD' then '001'
else currency
end
Trong đó sử dụng một thứ tự "theo thứ tự bảng chữ cái". Điều này hoạt động vì các ký tự được sắp xếp sau các chữ số số. (Sử dụng 'AAA'
thay vì '001'
cũng sẽ hoạt động).