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で質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) Worksheets メソッドは失敗しました。のエラー処理のやり方 4 2022/05/29 21:29
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- Excel(エクセル) 隣り合っていないセルを まとめて税込表示したい 8 2022/09/25 14:32
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerでNULLを挿入したいです
-
JDBCドライバがない?
-
INDIRECT関数の代替方法は?
-
テーブルの列数を調べたい
-
一部のカラムでdistinctし全て...
-
GREATESTで NULLをスルーする方...
-
mysqlで50音順にorder byしたい。
-
whereで全てを検索する方法
-
AUTO_INCREMENTに0はダメ?
-
WHEREなどの条件が多い場合、ど...
-
カラムをコピーして、新規カラ...
-
LIKE演算子の%について教えて...
-
BULK INSERT時のNull許容について
-
now()かCURRENT_TIMESTAMPか
-
mySQL プライマリーキーのカラ...
-
SELECT文で、指定カラム以外の...
-
SQLについて教えて下さい。 SEL...
-
構造が異なる二つのテーブルをu...
-
smalldate型へnull値の代入
-
group byで最後のレコードを抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLServerでNULLを挿入したいです
-
JDBCドライバがない?
-
type date にnullをinsert
-
SQLServer 複数列から同一語を検索
-
INDIRECT関数の代替方法は?
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
一部のカラムでdistinctし全て...
-
テーブルの列数を調べたい
-
DBの定義のサイズを大きくし過...
-
BULK INSERT時のNull許容について
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
group byで最後のレコードを抽...
-
now()かCURRENT_TIMESTAMPか
-
LIKEの右側にカラムを指定でき...
-
sql , insert で空行(全ての列...
-
ユニーク制約とユニークインデ...
-
AUTO_INCREMENTに0はダメ?
-
構造が異なる二つのテーブルをu...
おすすめ情報