Question

Previously I have asked to strip text from a field and convert it to an int, this works successfully. But now, I would like to do an INNER JOIN on this new value.

So I have this:

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

And then I get the Invalid Column Name memID error.

How can I fix this?

Was it helpful?

Solution

If you have to do this, you have design problems. If you're able, I would suggest you need to refactor your table or relationships.

OTHER TIPS

You can either repeat the whole expression or reverse your join:


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

Instead of memId, repeat the whole expression.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top