【发布时间】:2017-11-16 00:24:55
【问题描述】:
我想将图表名称的 XML 层次结构值选择到该图表下所有过滤器值的第一列。
我使用了下面的方法,但 ChartName 返回 NULL。我怀疑我需要做一个子查询
DECLARE @input XML =
'<Report>
<DataSets>
</DataSets>
<ReportSections>
<ReportSection>
<ReportItems>
<Chart Name="Hub1">
<Filters>
<Filter>
<Expression>Fields!Hub.Value</Expression>
<Operator>Like</Operator>
<Values>
<Value>Central</Value>
</Values>
</Filter>
<Filter>
<Expression>Fields!ADP_Hrs.Value</Expression>
<Operator>NotEqual</Operator>
<Values>
<Value DataType="Float">0</Value>
</Values>
</Filter>
<Filter>
<Expression>Fields!TL.Value</Expression>
<Operator>Equal</Operator>
<Values>
<Value DataType="Integer">1</Value>
</Values>
</Filter>
</Filters>
</Chart>
</ReportItems>
</ReportSection>
</ReportSections>
</Report>'
SELECT
[Tbl].[Col].value('Chart [4]', 'varchar(50)') as ChartName,
[Tbl].[Col].value('Expression [1]', 'varchar(50)') as Expression,
[Tbl].[Col].value(' Operator [1]', 'varchar(50)') as 'Operator',
[Tbl].[Col].value(' Values [1]', 'varchar(50)') as 'Value'
FROM
@input.nodes('Report/ReportSections/ReportSection/ReportItems/Chart/Filters/Filter') as [Tbl]([Col])
预期输出:
ChartName Expression Operator Value
------------------------------------------------------
Hub1 Fields!Hub.Value Like Central
Hub1 Fields!ADP_Hrs.Value NotEqual 0
Hub1 Fields!TL.Value Equal 1
【问题讨论】:
标签: sql-server xml