因此,我正在构建一个SQL视图,以获取我将用于报告的更具可读性的数据。我有一个表格,其中包含网站部分内的问题的字段数据(关键字ID)。 Column3是一个多关键字字段,存储在由chr(185)分隔的数据库中。
Column1 | Column2 | Column3
4456 | 2323 | ¹8661¹8662¹
我有第二个表格,其中包含关键字ID及其值。
Column1 | Column2
4456 | val1
2323 | val2
8661 | val3
8662 | val4
视图连接表格以显示关键字值,但我不确定如何处理多关键字字段(希望格式化结果如下)。
Column1 | Column2 | Column3
val1 | val2 | val3; val4
我是否需要某种功能才能实现这一目标,还是有另一种方式?
答案 0 :(得分:0)
以下是使用SQL Server的一些XML功能实现此目的的一种方法..使用列和表名使这种难以阅读,这里是fiddle :
with mapped (c1, c2, val) as (
select t1.column1, t1.column2, t2.column2
from table1 t1
cross apply (select convert(xml, '<_' + replace(substring(column3,2,len(column3)-2), '¹', '/><_') + '/>')) s(c)
cross apply c.nodes('*') x(n)
join table2 t2 on t2.column1=n.value('fn:substring(local-name(.),2)', 'int'))
select
column1 = c1.column2,
column2 = c2.column2,
column3 = (select val + '; ' from mapped where c1=t1.column1 and c2=t1.column2 for xml path(''))
from table1 t1
join table2 c1 on c1.column1=t1.column1
join table2 c2 on c2.column1=t1.column2