0
私はOracleを使用していますが、主な目的は列の一意の値をtable b
(Field1)
から表示することです。
1つの列で一意の値を選択しても、他の列がマルチテーブルに表示される
SELECT A.FIELD1, MAX(B.FIELD1) AS "UNIQUE", B.FIELD2, B.FIELD3, C.FIELD3, D.FIELD4
FROM A
INNER JOIN B ON B.FIELD4 = A.FIELD1
INNER JOIN C ON C.FIELD2 = B.FIELD1
INNER JOIN D ON D.FIELD3 = C.FIELD3
GROUP BY A.FIELD1, B.FIELD1, B.FIELD2, B.FIELD3, C.FIELD3, D.FIELD4
ORDER BY A.FIELD1, D.FIELD4 ASC
データ構造は、私はしかし、私はこれを達成することはできません、データごとに1つだけの行を表示したい
A
FIELD1 FIELD2 FIELD3 FIELD4
ABC DEF HIJ KLM
B
FIELD1 FIELD2 FIELD3 FIELD4
000 1X1 24D ABC
000 1X1 301 ABC
000 1X1 135 ABC
C
FIELD1 FIELD2 FIELD3 FIELD4
112 000 24D SFD
D
FIELD1 FIELD2 FIELD3 FIELD4
2RD VCB MNK GGG
です。助言がありますか?
1. MAX(B.FIELD1)は必ずb.field3を24Dとして返しません。すべての 'field1'がセーブされているので、任意の行をランダムに取得できます。 2. 'D.FIELD3 = C.FIELD3'。これはあなたのシナリオには何も返されません。参加条件が正しいことを確認してください。 – Utsav
Hm。私はそれを正しく説明していないと思う。しかし、基本的には、他のテーブルを結合した後でも、 'B.FIELD1'のユニークな値を取得したいのです。 – thebeast22
この場合、 'B.FIELD1'の固有値は1つだけですが、なぜ' B.FIELD3'を '24D'で、' 301'や他の値ではないのですか?そこに論理は何ですか? – Utsav