sql >> データベース >  >> RDS >> Sqlserver

SQL GROUP BY 句で空のグループを返す方法

    はい、アドホックのみの ordertotal を返し、その他の場合は 0 を返す式を作成し、その逆を行う別の式を作成して、それらの式を合計します。これには、場所ごとに 1 つの行が含まれ、アドホック用と契約用の 2 つの列が含まれます...

     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. MySQLのVarbinaryとBlob

    2. MySQLでスーパータイプサブタイプを正しく実装する

    3. PHP SimpleHTMLDOMパーサーでの文字エンコードの問題

    4. SQLステートメントを使用してMySQLテーブルの名前を変更します