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

Câu lệnh SQL GROUP BY CASE với hàm tổng hợp

Tôi đoán là bạn không thực sự muốn GROUP BY một số sản phẩm.

Câu trả lời cho: "Có cách nào để GROUP BY không bí danh cột chẳng hạn như some_product trong trường hợp này hay tôi có cần đặt điều này vào một truy vấn con và nhóm trên đó không? " là: Bạn không thể GROUP BY một bí danh cột.

SELECT mệnh đề, nơi bí danh cột được chỉ định, không được xử lý cho đến sau GROUP BY mệnh đề. Chế độ xem nội tuyến hoặc biểu thức bảng chung (CTE) có thể được sử dụng để cung cấp kết quả cho việc nhóm.

Chế độ xem nội tuyến:

select ...
from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
   from ...
   group by col1, col2 ... ) T
group by some_product ...

CTE:

with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
   from ...
   group by col1, col2 ... )
select ...
from T
group by some_product ... 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi kiểu do người dùng xác định trong SQL Server

  2. Cách loại bỏ tiêu đề cột khi gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

  3. Không thể thu nhỏ cơ sở dữ liệu ‘chỉ đọc’ | Thu hẹp nhật ký giao dịch khi sử dụng nhóm AlwaysOn Av sẵn sàng

  4. Kết hợp PowerShell và Trình quản lý chẩn đoán SQL để tự động giám sát SQL Server

  5. Hiệu suất tổng hợp có điều kiện