Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да върна празни групи в SQL клауза GROUP BY

Да, създайте израз, който връща поръчкатаtotal само за adhoc и 0 за останалите, и друг, който прави обратното, и сумирайте тези изрази. Това ще включва по един ред на местоположение с две колони, една за adhoc и една за договорено...

 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

ако наистина искате отделни редове за всеки, тогава един подход би бил:

 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. Как да премахна всички ограничения на външния ключ във всички таблици?

  2. Как да получите датите за групиране на записи за период от 3 дни в SQL?

  3. SSRS - Поддържане на таблица с еднаква ширина при динамично скриване на колони?

  4. Как да намерите всички свързани подграфи на неориентиран граф

  5. Не може да се предаде COM обект от тип „System.__ComObject“ към тип интерфейс „Microsoft.VisualStudio.OLE.Interop.IServiceProvider“