Sql server 将XML输出转换为varchar

Sql server 将XML输出转换为varchar,sql-server,tsql,Sql Server,Tsql,我有这个疑问 select ',' + CONVERT(VARCHAR,FileID) from [RETRY_INPUT_JSON] A inner join RETRY_JSON_STATUS B on JsonStatus = StatusID where RetryStatus = 'FAILED' Union select ',' + CONVERT(VARCHAR,FileID) from

我有这个疑问

select 
    ',' + CONVERT(VARCHAR,FileID) 
from 
    [RETRY_INPUT_JSON] A 
inner join 
    RETRY_JSON_STATUS B on JsonStatus = StatusID
where 
    RetryStatus = 'FAILED'          

Union

select 
    ',' + CONVERT(VARCHAR,FileID)   
from 
    [RETRY_INPUT_JSON] A 
inner join 
    RETRY_JSON_STATUS B on SendESBStatus = StatusID
where 
    RetryStatus In ('FAILED', 'Success')            
order by
    ',' + CONVERT(VARCHAR,FileID) 
FOR XML PATH('')
这将返回以下输出:

我想将其转换为
varchar

为此,我尝试:

DECLARE @FILEID AS VARCHAR(MAX)

        SET @FILEID =(SELECT STUFF
                        (
                            (
select ',' + CONVERT(VARCHAR,FileID) from [RETRY_INPUT_JSON] A inner join RETRY_JSON_STATUS B
        on JsonStatus=StatusID
        where RetryStatus='FAILED'          
        Union
        select ',' + CONVERT(VARCHAR,FileID)   from [RETRY_INPUT_JSON] A inner join RETRY_JSON_STATUS B
        on SendESBStatus=StatusID
        where RetryStatus In ('FAILED','Success')           
        ORDER BY ',' + CONVERT(VARCHAR,FileID) FOR XML PATH('') 
    ),
                             1, 1, ''
                        ) )

print @FILEID
但我有一个错误:

味精1086,第15级,状态1,第18行
当视图、内联函数、派生表和子查询包含集合运算符时,FOR XML子句在这些视图、内联函数、派生表和子查询中无效。要解决此问题,请使用派生表语法包装包含set运算符的SELECT,并在其上应用XML

看看这个

        DECLARE @FILEID AS VARCHAR(MAX)
        DECLARE @xml_var XML 

        SET @xml_var = ( select ',' + CONVERT(VARCHAR,A)   
                            from
                                (

                                        select 
                                        CONVERT(VARCHAR,FileID) A
                                        from 
                                        [RETRY_INPUT_JSON] A 
                                        inner join 
                                        RETRY_JSON_STATUS B on JsonStatus = StatusID
                                        where 
                                        RetryStatus = 'FAILED'     

                                Union

                                        select 
                                        CONVERT(VARCHAR,FileID)   A
                                        from 
                                        [RETRY_INPUT_JSON] A 
                                        inner join 
                                        RETRY_JSON_STATUS B on SendESBStatus = StatusID
                                        where 
                                        RetryStatus In ('FAILED', 'Success')            


                                )A   
                                order by A 
                                FOR XML PATH('') 
                        )

        select @FILEID = CONVERT(VARCHAR(MAX), @xml_var)
        SELECT @FILEID
        pRINT @FILEID