都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

便利な SQL の関数とか、構文とか、その他色々まとめてみる - その12 ( SUM の使い方の工夫 ) -

 今年は 10 年以上ぶりにお盆に帰郷します。しかも、車で。ということで車の総点検中です。
f:id:koogucc11:20160730161500j:plain
 
 今回は SUM 関数の使い方を少し工夫してみたいと思います。Sales.SalesOrderHeader テーブルを使って、TerritoryID 別の数を算出します。下記のクエリを SQL Server Management Studio で実行してみましょう。

SELECT 
    [TerritoryID_is_1]  = SUM(CASE WHEN TerritoryID = 1 THEN 1 ELSE 0 END),
    [TerritoryID_is_2]  = SUM(CASE WHEN TerritoryID = 2 THEN 1 ELSE 0 END),
    [TerritoryID_is_3]  = SUM(CASE WHEN TerritoryID = 3 THEN 1 ELSE 0 END),
    [TerritoryID_is_4]  = SUM(CASE WHEN TerritoryID = 4 THEN 1 ELSE 0 END),
    [TerritoryID_is_5]  = SUM(CASE WHEN TerritoryID = 5 THEN 1 ELSE 0 END),
    [TerritoryID_is_6]  = SUM(CASE WHEN TerritoryID = 6 THEN 1 ELSE 0 END),
    [TerritoryID_is_7]  = SUM(CASE WHEN TerritoryID = 7 THEN 1 ELSE 0 END),
    [TerritoryID_is_8]  = SUM(CASE WHEN TerritoryID = 8 THEN 1 ELSE 0 END),
    [TerritoryID_is_9]  = SUM(CASE WHEN TerritoryID = 9 THEN 1 ELSE 0 END),
    [TerritoryID_is_10] = SUM(CASE WHEN TerritoryID = 10 THEN 1 ELSE 0 END)
FROM 
    Sales.SalesOrderHeader

 各 ID 別の数を算出することができました。
f:id:koogucc11:20160730162044p:plain

 早く届かないかな?