How to choose returned column name in a SELECT FOR XML query?

后端 未结 6 787
时光取名叫无心
时光取名叫无心 2021-02-06 20:49

MS SQL has a convenient workaround for concatenating a column value from multiple rows into one value:

SELECT col1
 FROM table1
 WHERE col2 = \'x\'
 ORDER by col         


        
相关标签:
6条回答
  • 2021-02-06 21:07
    DECLARE @XmlData XML;
    
    SET @XmlData = (
            SELECT *
            FROM [dbo].[TABLE1]
            FOR XML PATH('ChildNodeDetailsResponse')
                ,ROOT('ParentNode')
            )
    
    SELECT @XmlData AS Result
    
    0 讨论(0)
  • 2021-02-06 21:10

    Try this...

    select
    (
        select '@greeting' = 'hello', '@where' = 'there', '@who' = 'world'
        for xml path ('salutation'), type
    ) as 'MyName'
    

    Note: If you omit the "type" after the "for xml", you get (I think) a string.

    0 讨论(0)
  • 2021-02-06 21:18

    For EXPLICIT xml generation - with unions you need to wrap results one more time (As a bonus result as XML):

    SELECT 
        CAST(  
            (
                SELECT 
                    * 
                FROM (
                    SELECT 
                        1 AS Tag
                        ,NULL AS Parent
                        ...
                    UNION ALL
                    SELECT ...
                    FOR XML EXPLICIT
                )
            ) as XML) as [MyName]
    
    0 讨论(0)
  • 2021-02-06 21:18
    DECLARE @XmlData XML;
    SET @XmlData =(SELECT * FROM [dbo].[Users] ORDER by UserName FOR XML path(''))
    SELECT @XmlData AS Result
    
    0 讨论(0)
  • 2021-02-06 21:22

    That should do:

    select(
    SELECT col1
     FROM table1
     WHERE col2 = 'x'
     ORDER by col3
     FOR XML path('')
    ) as myName
    

    Not pretty but should give the result that you need

    0 讨论(0)
  • 2021-02-06 21:23

    stored procedure

    declare @requestResultXML xml
    
    set @requestResultXML =
                (
                    SELECT 'NPOIT-1.0' AS '@Interface',
                    (
                        select  'Query'     as '@Type',
                                'GetBill'   as '@Query',
                                'True'      as '@CompressResult'
                            FOR XML PATH('Head'), TYPE
                    ),
                    (
                        select  @pin        as '@PIN',
                                @period     as '@Period',
                                @number     as '@Number',
                                @barcode    as '@Barcode'
                            FOR XML PATH('QueryParams'), TYPE
                    )   as Data
    
                    FOR XML PATH('DataExchangeModule')              
                )
    
    select @requestResultXML as GetBillRequest
    
    0 讨论(0)
提交回复
热议问题