首页 > 解决方案 > 在视图中使用带有 SQL 函数的连接

问题描述

对于你们中的一些人来说,这可能是一个非常基本的问题,但是请耐心等待这个新手学习 SQL Server。

我需要创建一个视图,我试图在其中连接两个表中的多个列。唯一的问题是,其中一列的值具有额外的字符,需要使用 RIGHT 函数或 SUBSTRING 将其删除,以便能够匹配另一个表中的相应列。

这是我写的,但我需要帮助我在 SerialNo 列中做错了什么:

SELECT a.ID, 
       a.SerialNo, 
       a.Price, 
       a.ItemName, 
       b.ID, b.SNumber, 
       b.ItemDesc
FROM Table1 a LEFT JOIN
Table2 b ON a.ID = b.ID AND
            a.Price = b.Price AND
            a.SerialNo = (SELECT RIGHT(b.SNumber, 6) AS b.SNumber from Table2)

标签: sqlsql-servertsqlleft-joinsql-view

解决方案


您不需要子查询来处理第二个连接条件,只需RIGHT直接调用:

SELECT a.ID, a.SerialNo, a.Price, a.ItemName, b.ID, b.SNumber, b.ItemDesc
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID AND
   a.Price = b.Price AND
   a.SerialNo = RIGHT(b.SNumber, 6);

附带说明一下,如果您认为需要经常执行此查询,那么您可能需要考虑在Table2此连接中添加一个新列,即SNumber. 这样做的原因是,当条件涉及函数时,连接可能会非常昂贵。而且,在这种情况下通常也不能使用索引。


推荐阅读