私は2つのテーブルを持っています:
T1
key code1 code2 code3
1 A A A
2 B B G
3 A B C
4 C C C
5 D E F
6 E E E
7 A D G
8 G G G
T2
code class1 class2 class3
A 1 0 0
B 0 1 0
C 0 1 0
D 1 1 0
E 0 0 1
F 0 1 0
G 1 0 0
次のようなクエリを書きたい...
create table T3 as
select key, case
when code1 in (select code from T2 where class1 = 1) or
code2 in (select code from T2 where class1 = 1) or
code3 in (select code from T2 where class1 = 1)
then 1 else 0
end as class1,
case
when code1 in (select code from T2 where class2 = 1) or
code2 in (select code from T2 where class2 = 1) or
code3 in (select code from T2 where class2 = 1)
then 1 else 0
end as class2,
case
when code1 in (select code from T2 where class3 = 1) or
code2 in (select code from T2 where class3 = 1) or
code3 in (select code from T2 where class3 = 1)
then 1 else 0
end as class3
from T1
基本的に、T1 の各キーについて、T2 の対応するコードに各クラスの 1 があるかどうかを確認します。その場合、新しい列は 1 です。
問題は、このような条件ステートメントでサブクエリをサポートしていないバージョンの HiveQL を使用していることです。同じ結果セットを達成する別の方法はありますか? 参加したいなと思っていたのですが、T2に対応するキーがないので、この場合どうするのが一番いいのかわかりません。
参考までに、結果セットは次のようになります。
T3
key class1 class2 class3
1 1 0 0
2 1 1 0
3 1 1 0
4 0 1 0
5 1 1 1
6 0 0 1
7 1 1 0
8 1 0 0