TSQL for xml路径-即使子查询为空,我如何才能包含子查询容器元素



我构建XML的查询包括子查询。子记录应该进入容器元素中。即使没有子记录,XML也必须具有容器元素。

考虑以下内容。即使没有子记录或验证失败,<Patients>容器元素也必须存在。

<Hospital>
    <Patients>
        <Patient></Patient>
        <Patient></Patient>
        <Patient></Patient>
    </Patients>
</Hospital>

我使用FOR XML PATH:尝试了几种不同的方法

select
    (
        select
            PatientFields
        from
            PatientTable
        for xml path('Patient'), root('Patients'), elements xsinil, type
    )
for xml path('Hospital'), elements xsinil, type

上述方法为空集完全省略了<Patients>元素。

下面的一个包含标签,但添加了xsi:nil="true"属性,这也会导致验证失败。

select
    (
        select
            PatientFields
        from
            PatientTable
        for xml path('Patient'), elements xsinil, type
    ) Patients
for xml path('Hospital'), elements xsinil, type

是否有任何方法可以强制容器元素存在?

select
    (
        select
            'John Doe'
        where 1 = 0
        for xml path('Patient'), type
    )
for xml path('Patients'), root('Hospital'), type

最新更新