Мне нужно написать запрос, чтобы заменить одно из значений столбца значением из другой строки в той же таблице. Я попытался использовать простое внутреннее соединение, но я не вижу результатов, которые мне нужны.Может INNER JOIN заменить значение столбца на другое значение из той же таблицы - для всех строк
Вот пример таблицы BANK_LOANS:
MONTH_ID LOAN_NUMBER BANK_NAME AMOUNT
======== =========== ========== ========
76 00-100 Bank One 100.00
75 00-100 The Bank One 150.00
74 00-100 Bank 1 150.00
76 00-200 Another Bank 300.00
75 00-200 Another Bank 500.00
Данные загружаются из внешних источников, которые не проверяют название банка, поэтому написание на имя банка в течение определенного количества кредитов может возможно варьировать , Клиент хочет, чтобы BANK_NAME находился в базе данных для максимального MONTH_ID, который будет использоваться для всех результатов для этого LOAN_NUMBER, и они хотят, чтобы результаты сортировались BANK_NAME. Так, например, кредит 00-100 нуждается в BANK_NAME «Bank One» для всех строк.
Я попытался с помощью внутреннего соединения, чтобы сделать это, но не получал правильные результаты
SELECT name.BANK_NAME,
bl.LOAN_NUMBER,
bl.AMOUNT
FROM BANK_LOANS
INNER JOIN BANK_LOANS home
ON name.LOAN_NUMBER = bl.LOAN_NUMBER
AND name.MONTH_ID = 67 --the max id provided to the query
ORDER BY name.BANK_NAME, bl.LOAN_NUMBER, bl.MONTH_ID DESC
Я думаю, что он работает с суб-запроса, но это своего рода уродливый. Мне было интересно, есть ли лучший способ (лучшие практики) для достижения этого с помощью объединений или других функций оракула.
Это похоже на работу, но он просто чувствует себя неправильно:
SELECT name.BANK_NAME,
bl.LOAN_NUMBER,
bl.AMOUNT
FROM BANK_LOANS,
(SELECT bl2.BANK_NAME, bl2.LOAN_NUMBER
FROM BANK_LOANS
WHERE bl2.MONTH_ID = 76 --max month id provided to query
) name
WHERE name.LOAN_NUMBER = bl.LOAN_NUMBER
ORDER BY name.BANK_NAME, bl.LOAN_NUMBER, bl.MONTH_ID DESC
Любой 'пункт от', который включает в себя запятой«чувствует себя неправильно «. –
@ GordonLinoff - за небольшим количеством исключений; например, материализованные представления с быстрым обновлением не поддерживают стандартный синтаксис соединения, для этого требуется старый синтаксис Oracle с условием объединения в предложении WHERE. Только Oracle знает, почему. – mathguy