Saya cuba mencari siaran tetapi hanya menemui penyelesaian untuk SQL Server/Access. Saya memerlukan penyelesaian dalam MySQL (5.X).
Saya mempunyai jadual (dipanggil sejarah) dengan 3 lajur: hos, nama item, nilai item.
Jika saya melakukan pilihan (select * from History
) ia kembali
+--------+----------+-----------+ | hostid | itemname | itemvalue | +--------+----------+-----------+ | 1 | A | 10 | +--------+----------+-----------+ | 1 | B | 3 | +--------+----------+-----------+ | 2 | A | 9 | +--------+----------+-----------+ | 2 | C | 40 | +--------+----------+-----------+
Cara membuat pertanyaan pangkalan data untuk mengembalikan kandungan yang serupa
+--------+------+-----+-----+ | hostid | A | B | C | +--------+------+-----+-----+ | 1 | 10 | 3 | 0 | +--------+------+-----+-----+ | 2 | 9 | 0 | 40 | +--------+------+-----+-----+
Saya akan menambah penerangan yang lebih panjang dan terperinci tentang langkah-langkah untuk menyelesaikan isu ini. Saya minta maaf jika terlalu panjang.
Saya akan mulakan dengan asas yang anda berikan dan menggunakannya untuk menentukan beberapa istilah yang akan saya gunakan sepanjang artikel ini. Ini akan menjadi jadual asas:
Ini akan menjadi matlamat kami, Nice Pivot Table:
Nilai dalam lajur
(atas sebab yang jelas).history.hostid
akan menjadi nilaihistory.hostid
列中的值将成为数据透视表中的y 值。history.itemname
y dalam jadual pangsi. Nilai dalam lajurhistory.itemname
akan menjadi x-valuesLangkah 1: Pilih lajur yang diminati
memberikan nilaihostid
提供y 值,itemname
. Dalam hasil yang diingini,hostid
memberikan nilai y danx .
Langkah 2: Panjangkan jadual asas dengan lajur tambahanitemname
. Kami biasanya mahu satu lajur untuk setiap nilai x. Ingat bahawa lajur x-value kami ialah
NULL
的模式 -itemname = "A"
的行的新列A
:Perhatikan bahawa kami tidak menukar bilangan baris - kami hanya menambah lajur tambahan. Juga ambil perhatian bahawa mempunyai nilai bukan nol dan lajur baharu yang lain mempunyai nilai nol.
Langkah 3: Kumpulkan dan agregat jadual lanjutan按 hostid 分组
. Kami memerlukan kerana ia memberikan nilai y:
NULL
(Perhatikan bahawa kita kini mempunyai satu baris setiap nilai y.)Okay, kita hampir sampai! Kita cuma perlu singkirkan yang hodoh .
Langkah 4: Cantikkan
. Kami akan menggantikan mana-mana nilai nol dengan sifar supaya set hasil kelihatan lebih baik:Selesai – kami telah membina jadual pangsi yang cantik menggunakan MySQL.
🎜 🎜Perkara yang perlu diambil perhatian apabila menggunakan proses ini:🎜itemvalue
NULL
,但也可能是0
或""
, ia bergantung pada situasi khusus andasum
,但是count
和max
也经常使用(max
sering digunakan apabila membina satu baris) "objek" diedarkan merentasi berbilang baris)group by
子句(并且不要忘记select
mereka)Batasan yang diketahui: