Index - функция соответствия как в PL-SQL - PullRequest
0 голосов
/ 28 февраля 2019

В последнее время у меня очень специфическая проблема с данными, которые мы получаем из нашего хранилища данных.Проблема решается, но мне нужно на некоторое время отредактировать нашу контрольную среду.

У нас есть данные о полученных счетах, однако по какой-то причине информация о каждом счете разделена на две строки: Первая строка имеетважные столбцы unique_code_A , vendor_number , а во второй строке есть важные столбцы unique_code_B , сумма .Таким образом, каждый счет имеет очень специфический уникальный код, и с этим кодом мне нужно каким-то образом объединить информацию из обеих строк, как вы можете видеть на рисунке.

how my table looks vs. how i would like to see row

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Из того, что вы сказали, самостоятельное объединение должно сработать:

SELECT 
    A.DATE_KEY,
    A.INVOICE_TYPE,
    A.UNIQUE_CODE_A,
    B.UNIQUE_CODE_B,
    A.VENDOR_NUMBER,
    B.AMOUNT
FROM MyTable A 
INNER JOIN MyTable B ON A.UNIQUE_CODE_A=B.UNIQUE_CODE_B
0 голосов
/ 28 февраля 2019

Ну, вы можете использовать агрегацию:

select date_key, invoice_type,
       max(case when unique_code_b is null then unique_code_a end) as unique_code_a,
       max(unique_code_b) as unique_code_b,
       max(case when unique_code_b is null then vendor_number end) as vendor_number,
       max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type;

РЕДАКТИРОВАТЬ:

Если уникальные коды могут быть использованы для сопоставления, то я бы предложил:

select date_key, invoice_type,
       coalesce(unique_code_a, unique_code_b) as unique_code,
       max(case when unique_code_b is null then vendor_number end) as vendor_number,
       max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type, coalesce(unique_code_a, unique_code_b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...