Запрос на чтение столбца и динамическое использование соответствующих данных в другом столбце - PullRequest
0 голосов
/ 13 июня 2019

У меня есть таблица, как показано ниже:

enter image description here

Я присоединяюсь к этой таблице (допустим, Местоположение ) с другой таблицей (Скажем Имя ) в столбце С.

Я хочу иметь возможность печатать конкатенацию значений столбца А в моем запросе Страна / Штат / Переулок / Адрес / Пригород

Поток должен быть таким.Допустим, существует таблица соответствия столбцов E (с Имена ).Затем запрос ищет соответствующее значение в столбце B, в данном случае это «D».Теперь он ищет значение «D» в ColumnC и получает соответствующее значение в ColumnB, которое является «C».Это продолжается до тех пор, пока значение в столбце B не станет нулевым.Как только мы дойдем до этой точки, объедините значения столбца A для всех извлеченных строк и отобразите его Страна / Штат / Переулок / Адрес / Пригород .

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

1 Ответ

0 голосов
/ 13 июня 2019

Это можно сделать с помощью рекурсивного CTE:

Сначала настройте данные во временной таблице:

declare @t table(A varchar(100), B varchar(10), C varchar(10))
insert @t values ('Address','C','D'),('Lane','B','C'),('Suburb','D','E'),('State','A','B'),('Country',null,'A')

Объявить начальную точку

declare @start varchar(10); set @start='E'

Запустить рекурсивный запрос

;with cte as(
    select A, B from @t where C=@start
    union all
    select convert(varchar(100),T.A+'/'+cte.A), T.B 
    from cte
    join @t T on T.C=cte.B
)
select * from cte where B is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...