SQL: join interno nella colonna alias
-
02-07-2019 - |
Domanda
In precedenza avevo chiesto di rimuovere il testo da un campo e convertirlo in un int, questo funziona correttamente. Ma ora, vorrei fare un INNER JOIN su questo nuovo valore.
Quindi ho questo:
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 poi ricevo l'errore memID
nome colonna non valido.
Come posso risolvere questo problema?
Soluzione
Se devi farlo, hai problemi di progettazione. Se sei in grado, suggerirei che devi riformattare la tabella o le relazioni.
Altri suggerimenti
Puoi ripetere l'intera espressione o invertire il tuo 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
Invece di memId, ripeti l'intera espressione.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow