[解決済み] JOIN条件の中でCASE文を使用できますか?
2022-04-22 03:47:59
質問
次の画像は、Microsoft SQL Server 2008 R2 System Views の一部です。この画像から、以下の関係があることがわかります。
sys.partitions
と
sys.allocation_units
の値に依存します。
sys.allocation_units.type
. そこで、それらを結合するために、次のようなことを書きます。
SELECT *
FROM sys.indexes i
JOIN sys.partitions p
ON i.index_id = p.index_id
JOIN sys.allocation_units a
ON CASE
WHEN a.type IN (1, 3)
THEN a.container_id = p.hobt_id
WHEN a.type IN (2)
THEN a.container_id = p.partition_id
END
しかし、上のコードではシンタックスエラーが発生します。その原因は
CASE
ステートメントを使用します。
どなたか少し解説していただけませんか?
エラーメッセージを追加します。
Msg 102, Level 15, State 1, Line 6 '=' 付近の構文が正しくありません。
解決方法は?
A
CASE
の値を返します。
THEN
の部分を削除します。 このように使うことができます。
SELECT *
FROM sys.indexes i
JOIN sys.partitions p
ON i.index_id = p.index_id
JOIN sys.allocation_units a
ON CASE
WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1
WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1
ELSE 0
END = 1
この文では、代入の値を返したり、等値性を調べたりしていますが、どちらも
CASE
/
THEN
の節を追加しました。 (もし
BOOLEAN
がデータ型であれば、等質性のテストは意味を持つだろう)。
関連
-
[解決済み] SQL Server 2008でテーブルのエイリアスを使用してUPDATE SQLを記述する方法は?
-
[解決済み] ストアドプロシージャ 'dbo.aspnet_CheckSchemaVersion' が見つかりませんでした。
-
[解決済み] アドホッククエリとは何ですか?
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
-
[解決済み] SQL Serverでテーブルの名前を変更する方法は?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?