SQL-запрос, когда значение внутреннего соединения существует или не существует - PullRequest
0 голосов
/ 03 июля 2019

У меня следующий запрос:

select 
    case when jp.IntValue = 0 then 'N' else 'Y' end 'Enabled',
    j.LastChange 'Last Changed',
    90 'Lookback History Days',
    max(h.StartTime) 'Last Run',
    j.JobName 'Job Name' 
from 
    Job j
inner join 
    JobProperty jp on jp.JobId = j.JobId and jp.PropertyId = 397
inner join 
    History h on h.JobId = j.JobId
group by 
    jp.IntValue, j.LastChange, j.JobName

То, что я хочу сделать, это расширить его так:

select  
    case when (jp.IntValue = 0 or jp.IntValue not exists) then 'N' else 'Y' end 'Enabled',
    j.LastChange 'Last Changed',
    90 'Lookback History Days',
    max(h.StartTime) 'Last Run',
    j.JobName 'Job Name' 
from 
    Job j
full outer join 
    JobProperty jp on jp.JobId = j.JobId and jp.PropertyId = 397
inner join 
    History h on h.JobId = j.JobId
group by 
    jp.IntValue, j.LastChange, j.JobName

но я не могу заставить его работать.

По сути, я хочу присоединиться к таблице, но если таблица не может присоединиться к FK, я все равно хочу записать задание.

1 Ответ

1 голос
/ 03 июля 2019

Если вы хотите все задания, используйте left join:

select (case when jp.IntValue = 0 or jp.IntValue not exists) then 'N' else 'Y'
        end) as Enabled,
       j.LastChange as LastChanged,
       90 as LookbackHistoryDays,
       max(h.StartTime) as LastRun,
       j.JobName
from Job j left join
     JobProperty jp
     on jp.JobId = j.JobId and
        jp.PropertyId = 397 left join
     History h
     on h.JobId = j.JobId
group by (case when jp.IntValue = 0 or jp.IntValue not exists) then 'N' else 'Y'
          end), j.LastChange, j.JobName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...