我有一张桌子,如下:
我将此表(假设为位置)与C列上的另一个表(假设为名称)连接起来。
我希望能够在查询 Country / State / Lane / Address / Suburb 中打印列A值的串联。
流程应如下所示。可以说有一个列值匹配E(与 Names )表。然后查询在B列中查找对应的值,在这种情况下为“ D”。现在,它在ColumnC中搜索值“ D”,并在ColumnB中获取相应的值“ C”。一直持续到B列中的值为空。到了这一点,将所有检索到的行的Column A值连接起来,并将其显示为 Country / State / Lane / Address / Suburb 。
我知道这可能需要动态查询,但是我不确定如何联接两个表并仅对1个动态查询使用。
答案 0 :(得分:0)
这可以通过递归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