• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLServer 複数列から同一語を検索)

SQLServer 複数列から同一語を検索

このQ&Aのポイント
  • SQLServer2008R2を使用しています。Code1~3にあるA1に該当するVal1~3の合計をそれぞれ取得したいのですが、SQL文の書き方がわかりません。
  • SELECT Sum(Val1), Sum(val2), Sum(Val3) FROM A WHERE Code1='A1' OR Code2='A1' OR Code3='A1'のようなSELECT文では、B1・Z1の数も合計してしまいます。
  • B1・Z1の数が含まれないようなSQL文は、どのように記述したらよいでしょうか?

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

SELECT SUM(CASE WHEN Code1='A1' THEN Val1 ELSE 0 END), SUM(CASE WHEN Code2='A1' THEN Val2 ELSE 0 END), SUM(CASE WHEN Code3='A1' THEN Val3 ELSE 0 END), FROM A

a00ki_kA1M
質問者

お礼

できました! いただいたSQL文の内容について、調べてみたいと思います。 回答ありがとうございました。

その他の回答 (1)

  • innoya
  • ベストアンサー率71% (10/14)
回答No.2

こんにちは。 下記のようにしてみてください。 -- #### テーブル作成 CREATE TABLE dbo.TempData ( ID int , Code1 varchar(10) , Code2 varchar(10) , Code3 varchar(10) , Val1 int , Val2 int , Val3 int ) -- #### テストデータ登録 INSERT INTO dbo.TempData SELECT 1, 'A1', null, null, 1, null, null UNION ALL SELECT 2, 'A1', 'Z1', null, 2, 1, null UNION ALL SELECT 3, 'B1', 'A1', null, 1, 1, null -- #### データ確認 SELECT SUM(CASE WHEN Code1='A1' THEN Val1 ELSE 0 END) AS Val1, SUM(CASE WHEN Code2='A1' THEN Val2 ELSE 0 END) AS Val2, SUM(CASE WHEN Code3='A1' THEN Val3 ELSE 0 END) AS Val3 FROM dbo.TempData WHERE Code1='A1' OR Code2='A1' OR Code3='A1'

a00ki_kA1M
質問者

お礼

正しく結果を得ることができました! 回答ありがとうございました。

関連するQ&A