SQL: junção interna na coluna de alias
-
02-07-2019 - |
Pergunta
Anteriormente eu pedi para retirar o texto de um campo e convertê-lo em um int, isso funciona com sucesso. Mas agora, eu gostaria de fazer um INNER JOIN sobre este novo valor.
Então, eu tenho este:
SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999))
AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab INNER JOIN
(SELECT id, title, first, last FROM memDetTab) AS userDetails ON memID = userDetails.id
E então eu recebo o erro Nome da coluna memID
inválido.
Como posso corrigir isso?
Solução
Se você tiver que fazer isso, você tem problemas de design. Se você é capaz, eu sugiro que você precisa refatorar seu mesa ou relacionamentos.
Outras dicas
Você pode repetir toda a expressão ou reverter a sua juntar-se:
SELECT *
FROM memDetTab
JOIN (SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab) subquery
ON subquery.memID = memDetTab.ID
Em vez de memid, repetir toda a expressão.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow