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?

Foi útil?

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
scroll top