Запрос к той же таблице в предложении where - PullRequest
0 голосов
/ 07 декабря 2018
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

1 Ответ

0 голосов
/ 07 декабря 2018

Я предполагаю, что вы хотите предложение HAVING, а не предложение WHERE, с:

having (max(case when SA.TYP = 'NTCV' then SA.AMT end) = 
        max(case when SA.TYP = 'COV' then SA.SRC end) 
       )
...