Sql server SQL server查询xml属性关闭每个字段

Sql server SQL server查询xml属性关闭每个字段,sql-server,sqlxml,Sql Server,Sqlxml,我需要编写一个Sql server查询来准确地生成这个xml文件 <Ob name="MData"> <FieldList> <Field name="ID">0980</Field> <Field name="IDDes">Working</Field> <Field name="Category">Arts Student</Field> </FieldLis

我需要编写一个Sql server查询来准确地生成这个xml文件

<Ob name="MData">
  <FieldList>
    <Field name="ID">0980</Field>
    <Field name="IDDes">Working</Field>
    <Field name="Category">Arts Student</Field>
  </FieldList>
</Ob>
到目前为止,我就是这么做的,但是我需要一些专家的帮助来获得确切的XML格式

Select ( 
    Select 
        'ID' as '@name',
        ID 
    from 
        dbo.MData as B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'IDDes' as '@name' , 
        IDDes 
        From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'Category' as '@name' , 
        category 
    From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
) 
FROM dbo.MData As A 
FOR XML path('FieldList'), Root('OB')
这是你的选择

Select ( 
    Select 
        'ID' as '@name',
        ID 
    from 
        dbo.MData as B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'IDDes' as '@name' , 
        IDDes 
        From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'Category' as '@name' , 
        category 
    From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
) 
FROM dbo.MData As A 
FOR XML path('FieldList'), Root('OB')
用“选择_值”包装每个值

像这样:

Select ( 
    Select 
        'ID' as '@name',
        (SELECT ID)
    from 
        dbo.MData as B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'IDDes' as '@name' , 
        (SELECT IDDes)
        From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'Category' as '@name' , 
        (SELECT category)
    From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
) 
FROM dbo.MData As A 
FOR XML path('FieldList'), Root('OB')

堆栈溢出不是一个给我代码的站点;我们希望你们首先付出一些努力,展示你们所做的一切。此外,您没有提到表模式,尽管我可以猜到它是什么。您希望从哪个基表获取数据?请向我们展示表格结构和样本数据!创建表[dbo].[MData][ID][nvarchar]50 NULL,[IDDes][nvarchar]50 NULL,[Category][nvarchar]50 NULL,在[PRIMARY]ID上IDDes类别0980工科学生0981工科学生070非工科学生选择“ID”作为“@name”,从dbo.MData中选择ID作为B,其中A.ID=B.ID作为XML路径“Field”,键入,选择“IDDes:”作为“@name”,将dbo.MData中的IDDes作为B,其中A.ID=B.ID作为XML路径“Field”,键入,选择“Category:”作为“@name”,将dbo.MData中的Category作为B,其中A.ID=B.ID作为XML路径“FieldList”,将dbo.MData作为XML路径“FieldList”键入,亲爱的奥兹伦,衷心感谢你。这就是我要找的。再次感谢。
Select ( 
    Select 
        'ID' as '@name',
        (SELECT ID)
    from 
        dbo.MData as B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'IDDes' as '@name' , 
        (SELECT IDDes)
        From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
), ( 
    Select 
        'Category' as '@name' , 
        (SELECT category)
    From dbo.MData As B 
    Where A.ID = B.ID 
    FOR XML Path('Field'), Type 
) 
FROM dbo.MData As A 
FOR XML path('FieldList'), Root('OB')