質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

761閲覧

SQL CASE文での条件分岐

kkk6

総合スコア15

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/02/19 13:59

編集2020/02/19 14:00

テーブル TEST

CODENAMEGROUP
1田中1
2吉田1
3鈴木2
4青木2
4青木3

TESTテーブルにおいて
下記ストアドの
@PALAMの値が'A'の時GROUPが1または2の「CODE」, 「NAME」,「GROUP」
@PALAMの値が'A'の以外の時GROUPが1の「CODE」, 「NAME」,「GROUP」を取得したいのですが
どのようにしたらよいでしょうか?
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ALTER PROCEDURE [dbo].[usptest]
@PALAM CHAR,
AS
BEGIN

SELECT *
FROM TEST
WHERE GROUP = CASE @PALAM WHEN 'A' THEN 1 END OR GROUP = CASE @PALAM WHEN 'A' THEN 2 END
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

@PALAM = 'A'の時↓
|CODE|NAME|GROUP|      
|:--|:--:|--:|
|1|田中|1|
|2|吉田|1|
|3|鈴木|2|
|4|青木|2|

@PALAM = 'A'の以外の時↓
|CODE|NAME|GROUP|      
|:--|:--:|--:|
|1|田中|1|
|2|吉田|1|

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/19 14:01

「SQL」とひとえにいっても方言がありますから、想定するDBをタグに追加し、バージョンを質問本文に追記してください。
javahack

2020/02/19 14:30 編集

※勘違いのため削除
Orlofsky

2020/02/19 14:23

テーブル定義はCREATE TABLEに、テーブル中のデータはINSERTに訂正できたほうが的確なコメントが付き易いです。
takasima20

2020/02/19 15:29

ストアドプロシージャなのかな? だったらIF文的なものを使って別のSQLを発行すればいいのでは?
guest

回答1

0

ベストアンサー

@PALAMの値が'A'の時GROUPが1または2の「CODE」, 「NAME」,「GROUP」
@PALAMの値が'A'の以外の時GROUPが1の「CODE」, 「NAME」,「GROUP」を取得したい

パラメータを基準に考えるから、ややこしくなっているだけです。
取得する条件に対して、パラメータをどのように付加するかで考えるとすっきりします。

@PALAMがAでもA以外でも、GROUP = 1は取得するなら、それはGROUP = 1は必ず取得するという事。
GROUP = 2の場合は、@PALAMが'A'の時

SQL

1SELECT * 2FROM TEST 3WHERE GROUP = 1 4 or (GROUP = 2 AND @PALAM ='A')

投稿2020/02/19 16:21

編集2020/02/20 01:32
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問