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

Cách trả về các nhóm trống trong mệnh đề GROUP BY của SQL

Có, hãy xây dựng một biểu thức trả về tổng thứ tự chỉ cho adhoc và 0 cho các hàm khác, và một biểu thức khác thực hiện ngược lại và tính tổng các biểu thức đó. Điều này sẽ bao gồm một hàng cho mỗi vị trí với hai cột một cho adhoc và một cho Hợp đồng ...

 SELECT Location,  
     Sum(Case When Contract_ID Is Null Then OrderTotal Else 0 End) AdHoc,
     Sum(Case When Contract_ID Is Null Then 0 Else OrderTotal  End) Contracted
 FROM Orders 
 GROUP BY Location

nếu bạn thực sự muốn các hàng riêng biệt cho từng hàng, thì một cách tiếp cận sẽ là:

 SELECT Location, Min('AdHoc') ContractStatus,
     Sum(Case When Contract_ID Is Null 
              Then OrderTotal Else 0 End) OrderTotal
 FROM Orders 
 GROUP BY Location
 Union
 SELECT Location, Min('Contracted') ContractStatus,
     Sum(Case When Contract_ID Is Null 
              Then 0 Else OrderTotal  End) OrderTotal
 FROM Orders 
 GROUP BY Location
 Order By Location


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trong SQL Server, làm cách nào để biết tôi hiện đang sử dụng chế độ giao dịch nào?

  2. Tạo các giá trị 9 chữ số duy nhất

  3. SQL:Transpose thực

  4. SQL Server:Làm thế nào để cho phép các lược đồ?

  5. Cách tốt nhất để chia nhỏ dữ liệu XML thành các cột cơ sở dữ liệu SQL Server