Поиск разных значений в двух таблицах не работает - PullRequest
0 голосов
/ 27 июня 2019

У меня есть 2 таблицы (я только показал выбранные поля):

Таблица A:

    <LOCATION CODE>
    ACT   
    NSWNS    
    OSUSA
    Parra
    Parra
    Parra
    ACT
    ACT

Таблица B (справочная таблица):

<CODE>    <DESCRIPTION>
ACT        Australian Capital Territory
NSWNS      New South Whales - North South
OSUSA      Overseas - USA
Parra      Parramatta

«Описание» относится к типу «текст». «Код» имеет тип «varchar». "location" является типом t_code_key.

Я пытаюсь выполнить объединение обеих этих таблиц, чтобы я получил уникальный список элементов «Код» из таблицы А с их полным описанием в таблице В.

Я хочу получить что-то вроде этого:

<CODE>   <DESCRIPTION>
ACT      Australian Capital Territory
Parra    Parramatta
NSW      New South Whales

Я пробовал следующие два запроса, которые я написал, но мне не повезло, только ошибки:

select mp.location, ct.description
from 
    (select DISTINCT CAST(description AS VARCHAR(MAX)) AS ct FROM code_table)
    full outer JOIN
    (select DISTINCT location from mailout_profile) as mp 
        on ct.code = mp.location;

select mp.location, ct.description
from 
    (select DISTINCT convert(VARCHAR(MAX), description) AS ct FROM code_table)
    full outer JOIN
    (select DISTINCT location from mailout_profile) as mp 
        on ct.code = mp.location;

Я получаю следующие ошибки:

SQL Error [156] [S0001]: Incorrect syntax near the keyword 'full'.
  Incorrect syntax near the keyword 'full'.
  Incorrect syntax near the keyword 'full'.

Буду признателен за помощь, спасибо! :)

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Вы можете использовать следующий запрос, чтобы получить желаемый результат -

Пример данных

Declare @TableA table
(LocationCode varchar(20))

Insert into @TableA
values

    ('ACT'   ),
    ('NSWNS' ),   
    ('OSUSA'    ),
    ('Parra'    ),
    ('Parra'    ),
    ('Parra'    ),
    ('ACT'  ),
    ('ACT'  )


Declare @TableB table
(Code varchar(20), Description varchar(100))

Insert into @TableB
values
('ACT'    ,  'Australian Capital Territory'   ),
('NSWNS'  ,  'New South Whales - North South' ),
('OSUSA'  ,  'Overseas - USA'                 ),
('Parra'  ,  'Parramatta'                     )

Запрос

select DISTINCT LocationCode, [Description] 
From @TableA a inner join @TableB b on a.LocationCode = b.Code
1 голос
/ 27 июня 2019

Пожалуйста, попробуйте это:

WITH r1 (loc) AS
    (SELECT DISTINCT LOCATION FROM [mailout_profile])
SELECT Code, Description FROM r1
FULL OUTER JOIN [code_table] ct ON r1.loc =  ct.Code

enter image description here

...