Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tự động tạo cột từ dữ liệu hàng bằng Chọn trong Bigquery

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt sql_mode trong my.cnf trong MySQL 8?

  2. Tập lệnh kiểm tra tình trạng sao chép MySQL

  3. Codeigniter ActiveRecord:tham gia backticking

  4. tập lệnh mẫu php để phân trang

  5. Chỉ chọn và trả về Checksum (không phải Table) từ bảng checksum trong mysql