私は「エレガントに」解決するのに苦労しているOracleの問題に取り組んでいます。
A、B、C の 3 つの異なる識別子を持つデータ抽出があります。
各識別子は複数の行に表示される場合があり、各行にはこれら 3 つの識別子の 1 つまたは複数が含まれる場合があります (つまり、列にデータが入力されているか null である)。
A、B、または C のいずれかの組み合わせを共通に持つすべてのレコードをグループ化し、それらに同じグループ ID を割り当てられるようにしたいと考えています。
最終的なグループがどうあるべきかを示す表を抽出します。
Rownum | A | B | C | End group
1 p NULL NULL 1
2 p r NULL 1
3 q NULL NULL 2
4 NULL r NULL 1
5 NULL NULL s 2
6 q NULL s 2
私の最初のアプローチは、抽出の各行に GUID を割り当て、3 つの識別子のルックアップ テーブルを作成することでした。
GUID | IDENTIFIER | IDENTIFIER TYPE | GROUP | END GROUP
1 p A 1 1
2 p A 1 1
2 r B 2 1
3 q A 3 3
4 r B 2 1
5 s C 4 3
6 q A 3 3
6 s C 4 3
次に、識別子でグループ化し、グループ番号を割り当てます。ただし、最終グループに示されているビューを提供するには、可能な場合はグループを組み合わせる必要があります。
この問題に対して私が考えることができる唯一の解決策は、ループを使用することですが、これは避けたいと思います。
どんなアイデアでも大歓迎です。
ニール