Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Pivot Dinamik dalam Oracle SQL Tanpa Kemas Kini Manual?

Bagaimana untuk Mencipta Pivot Dinamik dalam Oracle SQL Tanpa Kemas Kini Manual?

Patricia Arquette
Lepaskan: 2025-01-24 01:06:09
asal
996 orang telah melayarinya

How to Create Dynamic Pivots in Oracle SQL Without Manual Updates?

Laksanakan jadual pangsi dinamik dalam Oracle SQL tanpa pengubahsuaian manual

Dalam Oracle SQL, pengendali PIVOT membenarkan pengguna menukar baris kepada lajur. Walau bagaimanapun, sintaks PIVOT standard memerlukan pengguna untuk menentukan senarai statik nilai dalam pernyataan IN. Ini boleh menyebabkan masalah apabila nilai sering berubah, kerana ia memerlukan penyelenggaraan pertanyaan secara manual.

Untuk menyelesaikan masalah ini, anda boleh menggunakan fungsi dan penggabungan rentetan untuk mencipta jadual pangsi dinamik.

Gunakan fungsi untuk input dinamik

Salah satu cara ialah menggunakan fungsi untuk menjana rentetan nilai untuk digunakan dalam pernyataan IN. Contohnya:

<code class="language-sql">CREATE FUNCTION GetDynamicPivotInString(table_name VARCHAR2, column_name VARCHAR2) RETURN VARCHAR2 IS
BEGIN
  RETURN '''' || (
    SELECT LISTAGG('''' || value || '''', ',') WITHIN GROUP (ORDER BY value)
    FROM (SELECT DISTINCT value FROM table_name ORDER BY value)
  ) || '''';
END;</code>
Salin selepas log masuk

Fungsi ini menerima dua parameter: nama jadual dan nama lajur untuk dipangsi. Ia mengembalikan rentetan nilai yang digabungkan dengan koma.

Nilai rentetan sambungan

Alternatifnya ialah untuk menggabungkan rentetan nilai secara terus dalam pernyataan PIVOT menggunakan operator NEW_VALUE:

<code class="language-sql">COLUMN temp_in_statement NEW_VALUE STRING;
SELECT DISTINCT LISTAGG('''' || myLetter || ''' AS ' || myLetter, ',')
    WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement
FROM myTable;

SELECT * FROM
(SELECT myNumber, myLetter, myValue FROM myTable)
PIVOT (Sum(myValue) AS val FOR myLetter IN (&temp_in_statement));</code>
Salin selepas log masuk

Pendekatan ini memastikan pernyataan PIVOT sentiasa menggunakan nilai terkini dalam lajur yang ditentukan.

Penghadan

Kedua-dua kaedah mempunyai had. Menggunakan fungsi memerlukan penyelenggaraan kod tambahan. Kaedah penggabungan dihadkan oleh saiz rentetan yang boleh digabungkan, iaitu 4000 bait secara lalai. Walau bagaimanapun, kaedah ini memberikan fleksibiliti dan tidak memerlukan campur tangan manual apabila data atau nilai pangsi berubah.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pivot Dinamik dalam Oracle SQL Tanpa Kemas Kini Manual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan