OUTER JOIN中的MSSQL操作

时间:2011-09-28 10:55:11

标签: sql-server-2008 join operators

我正在尝试使用唯一值连接两个表,但是在一个表中它是具有不同长度的字段的一部分,例如:

表一:

       Block_Run_No  Vehicle_No
200001.412.20110104        1001
 20002.412.20110104        1002

表2

Block_No  Departure
  200001       3600
   20002       7200

现在我想通过Block_No加入他们并试试这个:

SELECT Block_No, Vehicle_No, Departure
FROM Table1,
    FULL OUTER JOIN Table2 A on LEFT(Table1.Block_Run_No,CHARINDEX('.',Table1.Block_Run_No)-1) = A.Block_No

但是,它声称无法识别JOIN中的表达式Table1.Block_Run_No。有人可以帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

WITH Table1( Block_Run_No,Vehicle_No) AS
(
SELECT '200001.412.20110104', 1001 UNION ALL
SELECT '20002.412.20110104', 1002
),Table2(Block_No, Departure) AS
(
SELECT 200001,3600 UNION ALL
SELECT 20002,7200
)

SELECT Block_No, Vehicle_No, Departure
FROM Table1
    FULL OUTER JOIN Table2 A on 
    LEFT(Table1.Block_Run_No,CHARINDEX('.',Table1.Block_Run_No)-1) = A.Block_No

对我来说很好。你这里有一个流氓逗号

FROM Table1, FULL OUTER JOIN

也许这是投诉的来源? (Intellisense抱怨Table1.Block_Run_No在删除之前无法绑定,但红色下划线FULL