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?

È stato utile?

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