以前我要求从字段中删除文本并将其转换为int,这样可以成功运行。但现在,我想对这个新值进行INNER JOIN。
所以我有这个:
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
然后我收到无效列名memID
错误。
我该如何解决这个问题?
答案 0 :(得分:6)
您可以重复整个表达式或反转您的联接:
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
答案 1 :(得分:1)
而不是memId,重复整个表达。
答案 2 :(得分:0)
如果必须这样做,则存在设计问题。如果你能,我建议你需要重构你的桌子或关系。