Pertanyaan PIVOT pada Rekod Cemerlang dengan Persatuan Tertahan
Pertimbangkan senario di mana kami mempunyai jadual dengan data yang mengandungi aktiviti dan peratusan untuk individu. Pertanyaan PIVOT standard menggunakan fungsi MAX mungkin mengabaikan aktiviti dengan nilai peratusan sifar. Untuk menangani isu ini, kami memperkenalkan penyelesaian yang mengekalkan perhubungan antara aktiviti dan peratusan.
Untuk mencapai matlamat ini, kami menggabungkan fungsi ROW_NUMBER() ke dalam ungkapan jadual biasa (CTE) untuk menyusun aktiviti secara berurutan dalam setiap kumpulan nama. Dengan teknik ini, pertanyaan PIVOT boleh mengekalkan perkaitan antara aktiviti dan peratusan merentas berbilang baris.
Berikut ialah contoh pertanyaan yang disemak:
;with cte as ( select *, ROW_NUMBER() over (partition by name order by percentage desc) ROWNUM from A ), cte2 as ( SELECT Id,Code,ROWNUM,James,James_,Sam,Sam_,Lisa,Lisa_ FROM cte PIVOT(MAX(activity) FOR name IN (James,Sam,Lisa)) AS PVTTable PIVOT ( MAX(percentage) FOR name1 IN (James_,Sam_,Lisa_)) AS PVTTable1 ) select Id, Code, MAX(James) James, MAX(James_) James_, MAX(Sam) Sam, MAX(Sam_) Sam_, MAX(Lisa) Lisa, MAX(Lisa_) Lisa_ from cte2 group by Id, Code, ROWNUM
CTE, cte, menambah ROWNUM lajur ke jadual awal, menyusun aktiviti untuk setiap nama dalam susunan peratusan menurun. Susunan ini membenarkan pertanyaan PIVOT seterusnya untuk mengumpulkan dan mengagregat data dengan betul.
Output pertanyaan akan menyerupai hasil yang dijangkakan, dengan aktiviti yang berbeza dikaitkan dengan nama dan peratusan masing-masing:
Id Code James James_ Sam Sam_ Lisa Lisa_ 1 Prashant Running 43.43 Cooking 1 73 Walking 90.34 1 Prashant Stealing 0.00 Cooking 3.43 NULL NULL 1 Prashant Lacking 0.00 NULL NULL NULL NULL
Menggunakan teknik ini, kami boleh memperoleh hasil PIVOT yang lengkap dan tepat sambil mengekalkan perkaitan antara aktiviti dan peratusan, walaupun untuk rekod dengan sifar nilai peratusan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Pertanyaan PIVOT pada Rekod Terbeza Semasa Memelihara Persatuan dan Mengendalikan Nilai Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!