我在MS SQL Server中有一个看起来像这样的表。
我想查询此表,以便TagId和Value列由EntityId组合在一起并显示为XML。
示例查询结果
XML结构不固定。任何类型的XML结构都可以。 有可能吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
这似乎不是一个更好的方法。但它提供了解决方案:
DECLARE @Table TABLE(id int, TagId int, Entityname Varchar(100),EntityId INt, value VARCHAR(50))
INSERT INTO @Table VALUES(1,1,'TravelerProfile',856,'Finanace')
INSERT INTO @Table VALUES(2,2,'TravelerProfile',856,'A')
INSERT INTO @Table VALUES(3,3,'TravelerProfile',856,'pune')
select
distinct Entityname, EntityId,
stuff((
select ',' + 'OpenTag'+ CAST(u.id AS VARCHAR)+'MidTag'+ u.value+'EndTag'
from @Table u
where u.EntityId = EntityId
order by u.EntityId
for xml path('')
),1,1,'') as Value
INTO #temp
from @Table
group by Entityname,EntityId
SELECT Entityname, EntityId
,REPLACE(REPLACE(REPLACE(REPLACE(VALUE,'OpenTag','<Tags><TagId = "'),'MidTag','" value="'),'EndTag','"/></Tags>'),',','') Value
FROM #temp
DROP TABLE #temp
<强>输出:强>
Entityname EntityId Value
TravelerProfile 856 <Tags><TagId = "1" value="Finanace"/></Tags><Tags><TagId = "2" value="A"/></Tags><Tags><TagId = "3" value="pune"/></Tags>