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