Операция MSSQL в рамках ВНЕШНЕГО СОЕДИНЕНИЯ - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь объединить две таблицы, используя уникальное значение, однако в одной таблице это часть поля различной длины, например:

Таблица первая:

       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

Однако, он утверждает, что не распознает выражение Table1.Block_Run_No в JOIN.Кто-нибудь может помочь мне здесь?

Спасибо!

1 Ответ

1 голос
/ 28 сентября 2011
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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...