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

Cách thực hiện một yêu cầu SQL bằng CASE

Có quá nhiều thứ sai, thật khó để biết bắt đầu từ đâu.

Bạn đang trộn hai dạng CASE biểu hiện. Một dạng là:

CASE <expression>
    WHEN <value> THEN <result>
    WHEN <value> THEN <result>
    ...
END

còn lại là:

CASE
    WHEN <condition> THEN <result>
    WHEN <condition> THEN <result>
    ...
END

Bạn đang cố sử dụng SELECT truy vấn dưới dạng một giá trị, nhưng nó thiếu FROM và bạn phải đặt một truy vấn trong dấu ngoặc đơn để sử dụng nó như một giá trị. Tôi nghi ngờ bạn muốn điều này được truy vấn từ cùng một bảng, trong trường hợp đó bạn không nên thực hiện truy vấn phụ, bạn chỉ nên sử dụng hàm tổng hợp trong truy vấn chính.

CASE biểu thức phải là một phần của SELECT danh sách, không phải sau FROM mệnh đề.

Nếu bạn muốn tạo các cột riêng biệt trong đầu ra cho từng trường hợp, chúng không thể nằm trong một CASE biểu thức.

Bạn có tất cả tên bảng và cột của mình trong dấu ngoặc kép, MySQL sử dụng dấu ngoặc kép để trích dẫn tên.

Bạn không cần SELECT DISTINCT khi sử dụng GROUP BY .

Bạn không thể tham chiếu đến bí danh trong SELECT danh sách trong cùng một truy vấn, ngoại trừ trong GROUP BY , ORDER BYHAVING .

Nó phải là:

SELECT MONTH(Facturation) AS month, LRU, Client,
    AVG(CASE WHEN MONTH(Factuation) = 1 AND Facturation BETWEEN 1 AND 6
        THEN Montant_fac_eur END) AS c1,
    AVG(CASE WHEN MONTH(Factuation) = 2 AND Facturation BETWEEN 2 AND 7
        THEN Montant_fac_eur END) AS c2,
    AVG(CASE WHEN MONTH(Factuation) = 3 AND Facturation BETWEEN 3 AND 8
        THEN Montant_fac_eur END) AS c3,
    AVG(CASE WHEN MONTH(Factuation) = 4 AND Facturation BETWEEN 4 AND 9
        THEN Montant_fac_eur END) AS c4,
    ...
FROM foundry_sync.data
GROUP BY `LRU`, `Client`, `Facturation`
ORDER BY Client, month


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Regex để khớp với các nhận xét MySQL

  2. có một lựa chọn thực hiện 10 truy vấn trong học thuyết (Symfony)

  3. Đọc các dấu hiệu như č ć đ š ž từ cơ sở dữ liệu MySql

  4. Kích hoạt Mysql sau khi cập nhật chèn vào một bảng khác với điều kiện

  5. Làm thế nào để tôi dễ dàng xác định tuổi từ ngày sinh nhật? (php)