Jointables несколько раз ABC - PullRequest
       32

Jointables несколько раз ABC

0 голосов
/ 04 декабря 2018
  • Я хочу разные цифры, такие как Кредит, Финансирование, Приложение, Закрытие Даты для loan_officer.
  • У меня есть таблица [E]. [Dbo]. [Main], к которой я применяю различные фильтры, а затем пытаюсь присоединиться к ним.Эта главная таблица имеет GUID в качестве первичного ключа.

Пожалуйста, предложите, как мне присоединиться к этим столам.

    Select A.loan_officer, A.OrganizationId, [C].Credit as Credit,      
    [P].Application as 'App', [F].Funding as Fund, [B].ClosingDate as Brok      
    from

    --Credit Pulls     
    (SELECT Credit
    FROM  [E].[dbo].[Main]
    where Loan_Officer is not null
    and LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline')) as [C], 

    --Application Units
    (SELECT Application
    FROM  [E].[dbo].[Main]
    where loan_Officer is not null
    and LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline')
    and Denial_Date is null ) as [P],

    --Funding Units      
    (SELECT Funding
    FROM  [E].[dbo].[Main]
    where loan_Officer is not null
    and LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline')
    and Denial_Date is null) as [F],

    -- Brokered Units 
    (SELECT ClosingDate
    FROM [E].[dbo].[Main]
    where loan_Officer is not null
    and LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline')
    and Loan_Info_Channel_F2626 like 'Brok%'
    ) as [B],

    [E].[dbo].[Main] A     
    Join  [B] on B.ClosingDate_748 =A.ClosingDate_748        
    Join F on F.Funding_Date= A.Funding_Date         
    Join P on A.Application_Date= A.Application_Date               
    Join C on C.Credit_Pull_Date = A.Credit_pull_date         

Ответы [ 2 ]

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

@ xQbert проделал тяжелую работу над этим, я просто немного расширил бы его, чтобы вытащить общие критерии поиска, чтобы вы могли выполнить небольшую индексацию, а не просто сканировать всю таблицу.Я также только что очистил некоторые столбцы в операторе case, чтобы получить правильные данные:

SELECT Loan_officer
     , OrganizationID
     ,Credit
     , CASE WHEN Denial_date is null  THEN [Application] ELSE NULL END as App
     , CASE WHEN Denial_date is null  THEN Funding else NULL end as Fund
     , CASE WHEN Loan_Info_Channel_F2626 like 'Brok%' THEN ClosingDate ELSE NULL end as Brok
FROM  [E].[dbo].[Main]
WHERE Loan_officer IS NOT NULL AND LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline')
0 голосов
/ 04 декабря 2018

Я здесь с scsimon ... не нужно никаких объединений, просто используйте несколько операторов case;один для каждого столбца, который у вас есть в качестве производной таблицы.

SELECT Loan_officer
     , OrganizationID
     , CASE WHEN Loan_officer is not null and 
       LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline') THEN Credit else NULL end as Credit
     , CASE WHEN Loan_officer is not null and 
       LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline') and
       Denial_date is null  THEN Credit else NULL end as Apps
     , CASE WHEN Loan_officer is not null and 
       LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline') and
       Denial_date is null  THEN Credit else NULL end as Funding as Fund,
     , CASE WHEN Loan_officer is not null and 
       LOANFOLDER IN ('Pipeline', 'Prospect', 'Employee Pipeline') and
       Loan_Info_Channel_F2626 like 'Brok%' THEN ClosingDate else NULL end as Brok
FROM  [E].[dbo].[Main]
...