SELECT
M.Id_x as Id
max(case when SA.TYP = 'CHRG' then SA.AMT end) CHRG,
max(case when SA.TYP = 'NTCV' then SA.AMT end) NC,
max(case when SA.TYP = 'COV' then SA.SRC end) COV
FROM database.tableA M
LEFT OUTER JOIN
database.tableB SA
On
(SA.Id_x = M.id_x
AND SA.date = m.date
AND SA.SRC=M.SRC)
Where M.date >= '2018-01-01'
And m.src = 'ox'
And sa.type IN ('CHRG', 'NTCV', 'COV')
Group by
M.id_x
M.date
Известный NTCV / COV может = '?'Или числовое значение
Справочная информация Причина, по которой я использую максимальный случай, когда аргумент должен работать, как база данных связывает каждый Id с типом, и каждый тип может иметь или не иметь числовое значение.Я не хочу, чтобы в данных было столько строк, сколько других таблиц.Для простоты я только показываю эти 2. Более того, максимальный случай, когда аргумент позволяет данным представлять собой строку, а не несколько строк.
Проблема Иногда мне может потребоваться запросить несколько сценариев, где NTVC = COV, но я не уверен, как это сделать в предложении where.Если я пытаюсь написать это как таковой, это выдает мне ошибку.Если я попытаюсь вызвать одну и ту же таблицу 3 раза, то она использует много ресурсов ЦП и буферизует.
Мне интересно, как бы вы переписали этот запрос, чтобы выполнить
Где ntvc = cov для ожидаемых результатов иногда в 1 м строк
Используемая технология: teradata sql assistant