Saya punya tabel StudentMarks
dengan kolom Name, Maths, Science, English
. Data seperti
Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10
Saya ingin mengaturnya seperti berikut:
Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Dengan unpivot saya bisa mendapatkan Nama, Menandai dengan benar, tetapi tidak bisa mendapatkan nama kolom di tabel sumber ke Subject
kolom di set hasil yang diinginkan.
Bagaimana saya bisa mencapai ini?
Sejauh ini saya telah mencapai permintaan berikut (untuk mendapatkan Nama, Tanda)
select Name, Marks from studentmarks
Unpivot
(
Marks for details in (Maths, Science, English)
) as UnPvt
Jawaban:
Permintaan Anda sangat dekat. Anda harus dapat menggunakan yang berikut ini yang termasuk
subject
dalam daftar pilih terakhir:Lihat SQL Fiddle dengan demo
sumber
Anda juga dapat mencoba metode un-pivoting sql standar dengan menggunakan urutan logika dengan kode berikut .. Kode berikut memiliki 3 langkah:
hapus semua kombinasi nol (jika ada, ekspresi tabel dapat sepenuhnya dihindari jika tidak ada nilai null di tabel dasar)
sumber
PILIH * DARI siswa
UNPIVOT (Marks FOR mata pelajaran dalam (Matematika, Sains, Bahasa Inggris));
sumber
Cara lain menggunakan cross join adalah dengan menentukan nama kolom di dalam cross join
sumber