Dalam MS SQL Server 2005 saya menulis satu permintaan dengan pengurutan bersyarat dan masalah saya adalah bahwa saya tidak tahu bagaimana saya bisa mengurutkan bersyarat menggunakan dua kolom?
Jika saya menulis kode seperti ini berfungsi normal
select
*
from
table
order by
case @pkr
when 'kol' then kol
when 'nci' then nci
end
Saya tidak tahu cara membuat pemesanan bersyarat untuk dua kolom atau lebih
select
*
from
table
order by
case @pkr
when 'KOL-NCI' then kol,nci
when 'kol-MPCI' then kol,mpci
end
Ada ide untuk membuat TSQL dinamis dan menggunakan sp_executesql
tetapi saya masih mencari ide yang lebih baik?
sql-server
order-by
adopilot
sumber
sumber
CASE
dapat diterapkan pada kasus ini.Jawaban:
Saya akui saya belum pernah melakukan ini sebelumnya sehingga ada sedikit goresan kepala yang terlibat. Tabel contoh sederhana untuk diperagakan:
Menggunakan parameter @SortStyle untuk membedakan antara perintah sortir, @SortStyle = 1 akan mengurutkan berdasarkan
col1 ASC, col2 DESC
dan @ SortStyle = 2 urutkan berdasarkancol2 DESC, col1 ASC
.Bagaimana Anda MEMESAN DENGAN parameter mencakup kasus penyortiran yang lebih sederhana dengan hanya 1 kolom.
sumber
Dengan asumsi Anda memiliki lebih banyak kasus (saya menambahkan satu), dan semua jenis kompatibel,
Ini bukan jenis multi-kolom: Anda memiliki jenis primer, diikuti oleh jenis sekunder. Lihat saja kotak dialog sortir di Excel untuk melihat apa yang saya maksud.
sumber
Dengan contoh yang Anda berikan itu sederhana:
Itu selalu baik untuk menghindari SQL dinamis jika memungkinkan
sumber