简体   繁体   English

根据临时列加入

[英]Join based on temp column

I have two tables that need to be joined, but the only similar column has excess data that needs to be stripped. 我有两个需要连接的表,但是唯一类似的列具有需要删除的多余数据。 I would just modify the tables, but I only have read access to them. 我只是修改表,但是我只有它们的读取权限。 So, I strip the unneeded text out of the table and add a temp column, but I cannot join to it. 因此,我从表中删除了不需要的文本并添加了一个临时列,但我无法加入其中。 I get the error: 我得到错误:

Invalid column name 'TempJoin' 无效的列名“ 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

Easiest way would be to wrap this in a CTE. 最简单的方法是将其包装在CTE中。 Also, be careful using NOLOCK , unless you have an explicit reason. 另外,除非有明确的原因,否则请小心使用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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM