
SQLServer2008R2を使用しています。
次のようなテーブルAがあります。
ID Code1 Code2 Code3 Val1 Val2 Val3
--------------------------------------
1 A1 1
2 A1 Z1 2 1
3 B1 A1 1 1
この時、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文は、どのように記述したらよいでしょうか?
どなたか有識者の方いらっしゃいましたら、宜しくお願い致します!
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
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'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerでNULLを挿入したいです
-
type date にnullをinsert
-
他のシートの検索
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
BULK INSERT時のNull許容について
-
INDIRECT関数の代替方法は?
-
テーブルの列数を調べたい
-
DBの定義のサイズを大きくし過...
-
ドロップダウンリストの連動し...
-
AUTO_INCREMENTに0はダメ?
-
MYSQLで全てのカラムから検索す...
-
mysqlで50音順にorder byしたい。
-
now()かCURRENT_TIMESTAMPか
-
SQLでカラムを追加し、条件に合...
-
SQLです!!教えてください。
-
[MySQL]LOAD DATA INFILE一部レ...
-
【Transact-sql】 where条件、i...
-
複数テーブルから全データ取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLServerでNULLを挿入したいです
-
type date にnullをinsert
-
JDBCドライバがない?
-
nullってなんですか
-
データベースをプログラム上で...
-
varcharの比較
-
nativecode=ERROR: relation
-
SQL,値の大きい順に値を取得
-
他のシートの検索
-
SELECT文で、指定カラム以外の...
-
INDIRECT関数の代替方法は?
-
DBの定義のサイズを大きくし過...
-
一部のカラムでdistinctし全て...
-
UNIONする際、片方テーブルしか...
-
ホームページを作ろうと思いま...
-
テーブルの列数を調べたい
-
AUTO_INCREMENTに0はダメ?
-
BULK INSERT時のNull許容について
-
SQLでカラムを追加し、条件に合...
-
【Transact-sql】 where条件、i...
おすすめ情報