Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara mengembalikan grup kosong dalam klausa SQL GROUP BY

Ya, buat ekspresi yang mengembalikan total pesanan untuk adhoc saja, dan 0 untuk yang lain, dan satu lagi yang melakukan kebalikannya, dan jumlahkan ekspresi tersebut. Ini akan mencakup satu baris per lokasi dengan dua kolom satu untuk adhoc dan satu untuk Kontrak...

 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

jika Anda benar-benar ingin baris terpisah untuk masing-masing, maka satu pendekatan adalah:

 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. Peta ulang sumber data Crystal Report

  2. Metode Pilihan untuk Menyimpan Kata Sandi Dalam Basis Data

  3. Bagaimana cara menampilkan data perkiraan tahun dari baris ke kolom?

  4. Bagaimana cara menetapkan nilai yang dipilih DropDownList ke SqlDataSource?

  5. Dapatkan Nama Kolom dari ID-nya di SQL Server:COL_NAME()