0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

特定列の値によって左結合の結合に使用する列を変更するSQL

Posted at

挨拶

初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
今回は業務上で使用した特定列の値によって左結合の結合に使用する列を変更するSQLについて備忘録をつけていきます。

要件

例として以下のようなテーブルが存在するとき
TableX
image.png
TableY
image.png
TAbleXにVALUEを元にTableYを左結合する。ただしTYPE_ABがAの時はVALUE_Aを、Bの時はVALUE_Bを参照する。

実装

今回は以下のようなSQLを作成しました。

SELECT TableX.ID,TableY.ID
FROM TableX
LEFT JOIM TableY
ON TableX.VALUE =
(CASE TableX.TYPE_AB
 'A' THEN TableY.VALUE_A
 'B' THEN TableY.VALUE_B
 ELSE ''
 )

CASE文以下がTYPE_AB列の値により比較対象の列を切り替えている部分になります。
CASEによって()内の値がVALUE_A,VALUE_B,''のいずれかになることで比較ができるようになります。例のテーブルではSQL実施結果は以下になります。
image.png
IDがA2,B3のデータは比較の際に0のVALUE値が参照され結合されません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?