我正在尝试将一些节点附加到数据库中的现有 XML 中。XML 如下所示:
<Parameters>
<Parameter>
<Name>ColumnsToDisplay</Name>
<Value>Priority</Value>
<Value>Description</Value>
<Value>Asset ID</Value>
</Parameter>
</Parameters>
每个参数的值的数量可能会有所不同。我正在尝试通过附加一些新值来更新 XML,如下面的查询所示。它有点不稳定,但这是我能让 FOR XML AUTO 工作的唯一方法。
set @NewXML =
(
select * from
(
SELECT
Parameter.C.value('Name[1]', 'varchar(256)') as Name,
Parameter.C.value('Value[1]', 'varchar(256)') AS Value
FROM tblSavedReportParameters
CROSS APPLY ParameterXML.nodes('//Parameter') Parameter(C)
where savedreportid = @SavedReportID
union
select 'FilterType' as Name, '#All' as Value
union
select 'FilterText' as Name, '#All' as value
) as Parameter for xml Auto, elements, root('Parameters')
)
一切都很好,除了新的 XML 只返回每个参数的第一个值。我已经在 value 节点上尝试了各种 CROSS APPLY 和 INNER JOINS,但无法降低语法。它目前看起来像这样:
<Parameters>
<Parameter>
<Name>ColumnsToDisplay</Name>
<Value>Priority</Value>
</Parameter>
<Parameter>
<Name>FilterText</Name>
<Value>#All</Value>
</Parameter>
<Parameter>
<Name>FilterType</Name>
<Value>#All</Value>
</Parameter>
</Parameters>
如何更新查询以返回每个参数的所有值?谢谢!