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

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

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

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

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

Q&A

2回答

3673閲覧

SELECT CASE 式で取得した列の再利用

han115

総合スコア7

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

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

0グッド

0クリップ

投稿2018/06/20 08:44

編集2018/06/20 08:44

SELECT
CASE WHEN XX = 0 THEN A
WHEN XX = 1 THEN B
END AS STATUS
,CASE WHEN STATUS = 'A' THEN ''

みたいな形でCASE式で作った列をSELECTの中のCASE式で評価する事は不可能でしょうか?
また、どのような形で実現するのが一般的でしょうか?

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

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

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

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

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

guest

回答2

0

ネストやWITHを使用するのが一般的だと思います。

SQL

1SELECT CASE WHEN STATUS = 'A' THEN '' END 2FROM ( 3 SELECT 4 CASE WHEN XX = 0 THEN A WHEN XX = 1 THEN B END AS STATUS 5 FROM XXX 6) YYY

または

SQL

1with YYY as ( 2 SELECT 3 CASE WHEN XX = 0 THEN A WHEN XX = 1 THEN B END AS STATUS 4 FROM XXX 5) 6SELECT CASE WHEN STATUS = 'A' THEN '' END 7FROM YYY

投稿2018/06/20 08:56

sazi

総合スコア25206

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

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

0

命題が微妙ですね

XX = 0 を評価してTHEN A
としていますが、このAはカラムAの値です

その結果を利用してSTATUS = 'A' を評価していますが
このAは文字列です

Aと'A'を混同しているのか、それとも別のモノと理解しているかによって
処理は変わります。

仮に最初のAは実は’A'だとすれば、STATUSを評価しても
再度XXを評価してもたいして変わらない気がしますが・・・

SQL

1SELECT 2CASE XX WHEN 0 THEN 'A' 3WHEN 1 THEN 'B' 4ELSE 'C' 5END AS STATUS 6,CASE XX WHEN 0 THEN '' 7ELSE 'D' 8END AS STATUS2

投稿2018/06/20 09:35

編集2018/06/20 09:36
yambejp

総合スコア114968

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

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

sazi

2018/06/20 09:46 編集

>Aと'A'を混同しているのか、それとも別のモノと理解しているかによって処理は変わります。 statusというエイリアスを付けた時点で、結局参照されるのは値なので同じなのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問