sql-server - SQL Server 2012 创建具有可变数量属性的 xml

标签 sql-server xml t-sql sql-server-2012

我有一张这样的 table

;with cte_list(ID, PROPERTY_NAME, PROPERTY_VALUE) as 
(
    select '100', 'ABC', 12 union all
    select '100', 'AD',  32 union all
    select '100', 'AQ',   9 union all
    select '200', 'AES',  1 union all
    select '200', 'FS',   5
)

我想要这个结果

ID      XML
---     -----------------------------------
100,    <codes ABC="12" AD="32" AQ="9"/>
200,    <codes AES="1" FS="5" />

这可能吗?

提前谢谢

最佳答案

一种方法

;with
cte_list(ID, PROPERTY_NAME, PROPERTY_VALUE)
as (
select '100', 'ABC', 12 union all
select '100', 'AD',  32 union all
select '100', 'AQ',   9 union all
select '200', 'AES',  1 union all
select '200', 'FS',   5
)
Select A.ID
      ,XML = cast('<codes '+Stuff((Select concat(' ',Property_Name,'="',Property_Value,'"') From cte_list Where ID=A.ID For XML Path ('')),1,1,'') + ' />' as xml)
 From (Select Distinct ID from cte_list) A

返回

ID  XML
100 <codes ABC="12" AD="32" AQ="9" />
200 <codes AES="1" FS="5" />

警告:property_name 应该是 XML 安全字符串(没有空格等)

关于sql-server - SQL Server 2012 创建具有可变数量属性的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46057814/

相关文章:

PHP SimpleXML、CodeIgniter 和 Apache 与 Suhosin

SQL Server 根据定义的起始值开始每行计数?

sql - Mysql服务器/数据库的维护步骤和性能步骤是什么?

sql - PIVOT 并插入每 N 行

c# - EF 核心不在迁移方法上创建表

python - 在odoo开发中,我每次创建数据的时候,都会出现这样的xml编码错误

sql-server - 将 BIT 列与 0 而不是 1 进行比较时,查询速度会慢几倍

python - 使用 Python 解析两个 XML

sql-server - 提高大型数据集的 SSIS 包插入/删除速度(或者这样可以吗?)

c# - 这个简单的更新查询有什么问题?