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