SQL: INNER JOIN auf Alias Spalte
-
02-07-2019 - |
Frage
Bisher habe ich gefragt, Text aus einem Feld abzustreifen und es in einen int umwandeln, das funktioniert erfolgreich. Aber jetzt, ich möchte ein INNER JOIN auf diesen neuen Wert tun.
So habe ich dies:
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
Und dann bekomme ich die ungültigen Spaltennamen memID
Fehler.
Wie kann ich dieses Problem beheben?
Lösung
Wenn Sie dies tun, haben Sie Design-Probleme. Wenn Sie in der Lage sind, würde ich vorschlagen, dass Sie Ihren Tisch oder Beziehungen Refactoring benötigen.
Andere Tipps
Sie können entweder wiederholen Sie den gesamten Ausdruck oder umgekehrt Ihre beitreten:
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
Statt memid, wiederholen Sie den gesamten Ausdruck.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow