У меня есть две таблицы A и B. Я хочу вернуть все записи из A и только совпадения из B. Я могу использовать левое соединение для этого.Но после присоединения я хочу вернуть записи, основанные на флаге в той же таблице.
Table A:
| Col1 | Col2 |
|------|------|
| 123 | 12 |
| 456 | 34 |
| 789 | 56 |
Table B:
| Col1 | Col2 | Col3 | Col4 | Col5 |
|------|------|------|------|------|
| 123 | 12 | NULL | I | 1 |
| 456 | 34 | NULL | E | 1 |
| 111 | 98 | NULL | I | 1 |
| 222 | 99 | NULL | E | 1 |
| 123 | 12 | AB | NULL | 2 |
| 456 | 34 | CD | NULL | 2 |
| 123 | 12 | EF | NULL | 2 |
| 111 | 98 | GH | NULL | 2 |
| 222 | 99 | IJ | NULL | 2 |
После объединения A и B слева это будет выглядеть так:
| Col1 | Col2 | Col3 | Col4 | Col5 |
|------|------|------|------|------|
| 123 | 12 | NULL | I | 1 |
| 456 | 34 | NULL | E | 1 |
| 123 | 12 | AB | NULL | 2 |
| 456 | 34 | CD | NULL | 2 |
| 123 | 12 | EF | NULL | 2 |
| 789 | 56 | NULL | NULL | NULL |
Значения 1 и 2 в Col5 указывают, нужно ли заполнять Col4 или Col3.1 для Col4 и 2 для Col3.
Я хочу вернуть все записи для «I» (но исключая запись с «I») в Col4, которая будет выглядеть следующим образом:
| Col1 | Col2 | Col3 | Col4 | Col5 |
|------|------|------|--------|------|
| 123 | 12 | AB | (null) | 2 |
| 123 | 12 | EF | (null) | 2 |
Я также хочу вернутьзаписи для 'E' (снова исключая запись, которая имеет 'E') в col4, но для всех значений, отличных от одного в Col3.В этом случае CD.Что будет выглядеть так:
| Col1 | Col2 | Col3 | Col4 | Col5 |
|------|------|------|--------|------|
| 456 | 34 | AB | (null) | 2 |
| 456 | 34 | EF | (null) | 2 |
| 456 | 34 | GH | (null) | 2 |
| 456 | 34 | IJ | (null) | 2 |
Может кто-нибудь подсказать, как справиться с этим в SQL?