Dưới đây là dành cho BigQuery!
Xin lưu ý:kỳ vọng của bạn về tên cột đầu ra không đúng!
Tên cột không được bắt đầu bằng chữ số - vì vậy trong ví dụ dưới đây - tôi sẽ sử dụng id_1, id_2 và id_3 thay vì 1, 2 và 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
Ví dụ trên giả sử bạn biết trước các ID của mình và có rất ít trong số đó, vì vậy không phải là vấn đề lớn nếu bạn viết thủ công một số dòng với SUM (...) cho mỗi id
Nếu đây không phải là trường hợp - trước tiên bạn có thể tạo truy vấn phía trên theo chương trình bằng cách chạy truy vấn bên dưới
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
)
kết quả là - bạn sẽ nhận được chuỗi như dưới đây
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
Vì vậy, bây giờ chỉ cần sao chép nó và dán vào Trình chỉnh sửa truy vấn và chạy nó
bạn có thể xem ví dụ tương tự tại đây - https://stackoverflow.com/a/36623258/5221944