我是SQL Server中“ FOR XML”功能的新手。我正在使用SQL Server 2012。
我有两个表,Word和Word_Expansion。
样本数据:
表格[字]:
WordOID Word ------- ---- 1 PIPE 2 WIRE
表格[Word_Expansion]:
WEOID fk_WordOID Word_Expansion ----- ---------- -------------- 1 2 COAX 2 2 SPEAKER CABLE 3 1 CONDUIT
现在,我想生成类似以下内容的XML:
<expansion> <sub>WIRE</sub> <sub>SPEAKER CABLE</sub> </expansion> <expansion> <sub>PIPE</sub> <sub>CONDUIT</sub> </expansion>
在制作XML FOR语句时,我付出了各种努力,但是似乎无法理解将这两个表混成正确的XML输出所需要做的工作。我将进一步研究XMLFOR语法,但是如果您有时间了解这一点…
有人对我应该尝试的内容有什么建议吗?
这应该为您解决问题:
SQL:
SELECT Word Sub, ( SELECT Word_Expansion AS Sub FROM Word_Expansion WE WHERE WE.fk_WordOID = W.WordOID FOR XML PATH(''), type ) FROM Word W FOR XML PATH ('Expansion')
XML输出:
<Expansion> <Sub>Pipe</Sub> <Sub>CONDUIT</Sub> </Expansion> <Expansion> <Sub>Wire</Sub> <Sub>COAX</Sub> <Sub>SPEAKER CABLE</Sub> </Expansion>
虽然我不确定为什么要将Word.Word归类为“ Sub”?相反,它不应该是Word_Expansion的父项(应该是sub_?)。
编辑:我发现此链接在研究FOR XML和嵌套查询时非常有用嵌套FOR XML