[解決済み] WHERE句の中にCASE文を入れ、複数の値を返す方法
2022-03-10 20:06:54
質問
私が扱っているクエリの表現は以下の通りです。
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 IN ('Value1','Value2')
AND (CASE
WHEN T1.Col1 = 'Value1'
THEN T1.Col2 IN ('Value3','Value4','Value5')
WHEN T1.Col1 = 'Value2'
THEN T1.Col2 IN ('Value6','Value7','Value8')
END
)
なぜかいつも2つ目のwhenのあたりでシンタックスでErrorになります。 また、両方のIN文の最初のコンマでシンタックスエラーが出ますが、2番目は出ません。特に違いはないのですが、ネストされたIN文を以下のようにOR文に変えてみました。
THEN (T1.COL2 = 'Value3') OR (T1.COL2 = 'Value4') OR (T1.COL2 = 'Value5')
その代わり、最初のOR文のあたりでシンタックスエラーが発生します。
以前、WHERE句でCASEを使ったことがありますが、1つの値しか返されませんでした。最初のカンマかOR文のどちらかで構文エラーが発生するということは、複数の値を返すことは不可能なのではと思います。
この問題を解決するためのヒントがあれば、非常にありがたいです。
P.S. 私はすでに一時テーブルを作成し、その上で条件付きDELETE文を実行することで回避策を持っています。しかし、私はこの質問に関する他の方法が可能であるかどうかを知りたいと思っています。
どのように解決するのですか?
を簡略化することができます。
WHERE
の基準は以下の通りです。
SELECT T1.Col3
FROM Table1 T1
WHERE
(
(T1.Col1 = 'Value1' AND T1.Col2 IN ('Value3','Value4','Value5'))
OR
(T1.Col1 = 'Value2' AND T1.Col2 IN ('Value6','Value7','Value8'))
)
同じクエリを2つのクエリとして記述する場合は
UNION
:
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 = 'Value1'
AND T1.Col2 IN ('Value3','Value4','Value5')
UNION -- note that this will return distinct results
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 = 'Value2'
AND T1.Col2 IN ('Value6','Value7','Value8')
ただし
WHERE
と
OR
CREATE INDEX IX_Table1_Col1_Col2_Incl ON Table1 (Col1, Col2) INCLUDE (Col3)
関連
-
[解決済み] SQL Server Error "String Data, Right Truncation "の意味と修正方法について教えてください。
-
[解決済み] 管理者ユーザーで有効なxp_cmdshellへのアクセスが拒否されました。
-
[解決済み] データベースのトランザクションログが満杯です。ログの領域が再利用できない理由を調べるには、sys.databases の log_reuse_wait_desc カラムを参照してください。
-
[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。
-
[解決済み] テーブルの上位1レコードを更新する sql server [重複].
-
[解決済み] BCP - IDENTITY列を持つテーブルにインポートする際、キャスト指定に無効な文字値がある。
-
[解決済み] シンプルに保つ、クエリで複数のCTEを行う方法
-
[解決済み] データベースとスキーマの違い
-
[解決済み] SQL ServerでGROUP BYと一緒にDISTINCTを使用する
-
[解決済み] データベース内の全テーブルのサイズを取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 式をデータ型datetimeに変換する際に算術オーバーフローエラーが発生する。(日付と時刻の表示中に...)
-
[解決済み] 各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] COUNTフィールドが正しくないか、構文エラーです。
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] オペランドタイプの衝突
-
[解決済み] UPDATEエラーです。"REPLACEの引数1の引数データ型textは無効です"
-
[解決済み] NVARCHAR(MAX)の最大文字数を教えてください。[重複しています]。
-
[解決済み] SQL Serverでforeachを記述する方法とは?
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?
-
[解決済み] SQL Server のストアドプロシージャを SQL Developer で実行するには?