#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. но все равно не соответствует