Объединение двух строк в Oracle
Причина слияния двух строк в том, что таблица, на которую я ссылаюсь, хранит транзакции как в дебетовых, так и в кредитных операциях. следовательно, всякий раз, когда происходит транзакция, в таблицу всегда добавляются две новые записи: одна для дебета и одна для кредита. Что мне нужно сделать, это объединить эти две связанные транзакции, например:
во что-то похожее на это:
забыл одну вещь. как сумма Дебета и Кредита определяется этим кодом:
CASE WHEN DTD.PART_TRAN_TYPE = 'D'
THEN (DTD.TRAN_AMT)
ELSE null
END DR_Amount,
CASE WHEN DTD.PART_TRAN_TYPE = 'C'
THEN (DTD.TRAN_AMT)
ELSE null
END CR_Amount,
суммы просто приходят из одной таблицы.
2 ответа
Здесь вы хотите запрос SQL JOIN.
Предполагая, что имя таблицы 'trans', что-то вроде:
SELECT table1.TRANSACTION_ID, table1.ACCT_CURRENCY,
table1.DR_AMOUNT, table2.CR_AMOUNT
FROM trans table1
INNER JOIN trans table2 on table1.TRANSACTION_ID = table2.TRANSACTION_ID
Это использует INNER JOIN для соединения таблицы 'trans' с самим собой. Мы делаем это, присваивая таблице псевдоним ("FROM trans table1" позволяет нам ссылаться на экземпляр trans с "table1"). Оператор on указывает Oracle взять каждую запись из таблицы table1 и присоединить ее к записи из таблицы table2, имеющей то же значение поля "TRANSACTION_ID".
В вашем случае у вас будет запись с кредитной или дебетовой стоимостью.
Рассмотрим имя таблицы как TRANS_INFO с образцом записи
Запрос:
SELECT * FROM TRANS_INFO CR_TABLE INNER JOIN TRANS_INFO DR_TABLE ON CR_TABLE.TRANS_ID = DR_TABLE.TRANS_ID AND (CR_TABLE.CR_AMOUNT <> '') И (DR_TABLE.DR_AMOUNT <> '')
OutPut: как объединенная строка на основе TRANS_ID