1

私は2つのテーブルを持っています:

TableA
PK      Alpha    Critter   Etc 
1        A      zebra     apple
2        C      lion      orange
3        R      giraffe   banana
4        D      gopher    pear

TableC
PK      Alpha   Animal    Misc
1       D       beaver    kiwi
2       D       camel     avacado

この結果が必要です:

Result
PK      Alpha    Critter  Etc
22      A       zebra    apple
23      C       lion     orange
24      R       giraffe  banana
25      D       gopher   pear
26      D       beaver   kiwi
27      D       camel    avacado

TableA.Alpha の値が、同じ値を持つ複数の TableC.Alpha と等しい場合、Select は次のようになります。

Select TA.Alpha, TA.Critter, TA.Etc
From TableA TA

Select TC.Alpha, TC.Animal, TC.Misc
From TableC TC

別々の行 (上記の例では 3 行)

それ以外の場合は、

Select TA.Alpha, TA.Critter, TA.Etc
From TableA TA

(一行)

CTEを使用する場合があります。何かのようなもの:

With T_CTE (Alpha,CountAlpha)
AS
(SELECT 
TC. Alpha, COUNT(TC.Alpha) as CountAlpha
FROM TableC TC
GROUP BY TC.Alpha
HAVING (COUNT(TC.Alpha) > 1 ))

Select TA.Alpha, TA.Critter, TA.Etc
From TableA TA
case when T_CTE.Alpha is not null then...else...end
left join T_CTE on T_CTE.Alpha = TA.Alpha

TableA.Alpha は一意です。TableC.Alpha は一意ではありません。

追加の行に対して別の選択を呼び出すことはできますか? より良いアプローチはありますか?また、一時テーブルを作成してそれらから選択することも考えました。これはより大きなクエリの一部ですが、ここではこの部分に焦点を当てたいと思います。助言がありますか?ありがとう。

4

1 に答える 1