sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man returnerar tomma grupper i SQL GROUP BY-sats

Ja, konstruera ett uttryck som returnerar ordertotal endast för adhoc, och 0 för de andra, och ett annat som gör det motsatta, och summera dessa uttryck. Detta kommer att inkludera en rad per plats med två kolumner en för adhoc och en för Contracted...

 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

om du verkligen vill ha separata rader för var och en, skulle ett tillvägagångssätt vara att:

 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. DAO.Recordset.Update resultat i reckord lock

  2. Välj alternativ från mysql-frågan

  3. MYSQL:Hur man ansluter till två tabeller på samma fråga som refererar till samma tabell två gånger

  4. Infogar i Oracle Nested Table i Java