• ベストアンサー

~以外を合計するSQL文

select 部名,sum(予算) from 部月別予算表 where 部名 in (人事部, 管理部, 開発部) group by 部名 こんな感じで、人事部、管理部、開発部それぞれの予算合計を出しています。 そこで、この三つの部以外の複数の部の予算合計を、部名「その他」として表示させたいのですが、どういう方法があるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

こんな感じでやります。 select case when 部名 in ('人事部','管理部','開発部') then 部名 else 'その他' end 部名, sum(予算) from 部月別予算表 group by case when 部名 in ('人事部', '管理部', '開発部') then 部名 else 'その他' end 2回もCASE文書くと見づらいなぁというときは、少しだけレスポンスには目をつぶって、 select 部名,sum(予算) from (select case when 部名 in ('人事部','管理部','開発部') then 部名 else 'その他' end 部名, 予算 from 部月別予算表) tmp group by 部名 SQL Server2005以降ならば、WITHを使って見やすくする方法もあります。 with yosan as (select case when 部名 in ('人事部','管理部','開発部') then 部名 else 'その他' end 部名, 予算 from 部月別予算表) select 部名,sum(予算) from yosan group by 部名

kamogawawa
質問者

お礼

ありがとうございました、参考にさせていただきました^^

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

 アクセスではこんな感じでできましたが。。。 SELECT 部名, SUM(予算) AS [予算合計] FROM 部月別予算表 WHERE 部名 IN ('人事部', '管理部', '開発部') GROUP BY 部名 UNION SELECT 'その他', SUM(予算) FROM 部月別予算表 WHERE 部名 NOT IN ('人事部','管理部','開発部') ORDER BY 部名 DESC;

kamogawawa
質問者

お礼

ありがとうございました、参考にさせていただきました^^

関連するQ&A