以前我要求从字段中删除文本并将其转换为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 错误。

我该如何解决这个问题?

有帮助吗?

解决方案

如果必须这样做,则存在设计问题。如果你能,我建议你需要重构你的桌子或关系。

其他提示

您可以重复整个表达式或反转您的联接:


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

而不是memId,重复整个表达。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top