Ссылка на временный столбец во ВНУТРЕННЕМ соединении

#sql

#sql

Вопрос:

У меня есть вызываемый временный столбец CFADTemp , который я пытаюсь использовать во внутреннем соединении, чтобы помочь мне сопоставить данные из другой таблицы.

 SELECT 
    CustomerNumber, AddressLine1, AddressLine2, AddressLine3
FROM 
    CFAddress A
INNER JOIN 
    (SELECT 
         CustomerNumber, AddressType, 
         MAX((CASE 
                 WHEN AddressType = '3' THEN '4'
                 WHEN AddressType = '1' THEN '3'
                 WHEN AddressType = '4' THEN '2'
                 WHEN AddressType = '2' THEN '1'
              END) AS CFADTemp
    FROM 
        CFAddress
    GROUP BY 
        CustomerNumber, AddressType) B ON B.CustomerNumber = A.CustomerNumber 
                                       AND...
  

Мне нужно присоединиться к CFADTemp и в случае, когда ситуация, а не только с CustomerNumber

Кто-нибудь знает, как использовать поле temp, чтобы заставить это внутреннее соединение работать, чтобы я мог получить нужные мне данные?

Комментарии:

1. Пожалуйста, опубликуйте весь запрос и заполните многоточие ... фактическим кодом.

2. У вас несбалансированные круглые скобки в вашем коде max(( должны быть max(

Ответ №1:

Ссылка на имя:

 ...
) B on B.CustomerNumber = A.CustomerNumber AND B.CFADTemp = A.AddressType
  

Если вам нужно такое же 3=>4,1=3,4=>2,2=>1 сопоставление для A.AddressType , вам понадобится другое CASE выражение.

Комментарии:

1. Я пытаюсь использовать это утверждение ДЛЯ B.CustomerNumber = A.CustomerNumber И B.CFADTemp = CASE, КОГДА AddressType = ‘3’, ЗАТЕМ ‘4’, КОГДА AddressType = ‘1’, ЗАТЕМ ‘3’, КОГДА AddressType = ‘4’, ЗАТЕМ ‘2’, КОГДА AddressType = ‘2’, ЗАТЕМ ‘1’ END

2. но все равно не соответствует