基于临时列加入
我有两个需要连接的表,但唯一的类似列有需要剥离的多余数据。我只是修改表格,但我只能读取它们。所以,我将不需要的文本从表格中删除并添加一个临时列,但我无法加入它。我得到的错误:基于临时列加入
Invalid column name 'TempJoin'
SELECT
CASE WHEN CHARINDEX('- ExtraText',a.Column1)>0 THEN LEFT(a.Column1, (CHARINDEX('- ExtraText', a.Column1))-1)
WHEN CHARINDEX('- ExtraText',a.Column1)=0 THEN a.Column1
END AS TempJoin
,a.Column1
,b.Column2
FROM Table1 as a
LEFT JOIN Table2 as b WITH(NOLOCK) ON b.Column2=TempJoin
最简单的方法是在一个CTE来包装这个。另外,be careful using NOLOCK,除非你有明确的理由。
WITH cte AS (
SELECT
CASE WHEN CHARINDEX('- ExtraText',a.Column1) > 0
THEN LEFT(a.Column1, (CHARINDEX('- ExtraText', a.Column1))-1)
WHEN CHARINDEX('- ExtraText',a.Column1) = 0
THEN a.Column1
END AS TempJoin,
a.Column1
FROM Table1 AS a
)
SELECT *
FROM cte
LEFT JOIN Table2 AS b WITH(NOLOCK) ON b.Column2 = TempJoin;
我会添加这个链接:https://blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere/ –
我会在@ZoharPal中添加它,因为Aaron的帖子是我学习的地方,他们可能有多邪恶。 – scsimon
工作,谢谢! – dbreienrk1
你不应该那样做。有外部选择,然后尝试加入。或用户CTE。 – Prathyush