Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Membuat kolom secara dinamis dari data baris menggunakan Select in Bigquery

Di bawah ini untuk BigQuery!

Harap dicatat:harapan Anda tentang nama kolom keluaran tidak benar!
Nama kolom tidak boleh diawali dengan angka - jadi dalam contoh di bawah ini - saya akan menggunakan id_1, id_2 dan id_3 alih-alih 1, 2 dan 3

SELECT
  SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
  SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
  SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable

Contoh di atas mengasumsikan Anda mengetahui sebelumnya ID Anda dan jumlahnya sangat sedikit sehingga bukan masalah besar untuk menulis beberapa baris secara manual dengan SUM(...) untuk setiap id

Jika ini tidak terjadi - Anda dapat membuat kueri di atas terlebih dahulu secara terprogram dengan menjalankan kueri di bawah ini

SELECT 'SELECT ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
   ) 
   + ' FROM YourTable'
FROM (
  SELECT id FROM (
    SELECT * FROM YourTable GROUP BY id ORDER BY id
)

sebagai hasilnya - Anda akan mendapatkan string seperti di bawah ini

SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable

Jadi, sekarang cukup salin dan tempel ke Editor Kueri dan jalankan

Anda dapat melihat contoh serupa di sini - https://stackoverflow.com/a/36623258/5221944




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kinerja MySQL:MySQL vs. MariaDB

  2. MySQL - Kesalahan entri duplikat saat mencoba menambahkan kolom baru

  3. Mysql Gabung Dua tabel pada kunci

  4. Bagaimana cara mendapatkan ID dari beberapa baris yang disisipkan di MySQL?

  5. Tidak dapat mengonversi nilai tanggal/waktu MySQL ke System.DateTime di VS2010