SQL Server 2016数据类型转换错误

SQL Server 2016数据类型转换错误,sql,sql-server,Sql,Sql Server,我有以下问题。由于某种原因,我使用多个SELECT语句作为我使用的工具,需要在第一行中使用FROM子句和一个SELECT值 文档ID是一个整型列。我需要文档ID作为逗号分隔的值,作为此查询的输出。(例如123477866475835) 问题是我遇到了以下错误。有人能帮忙吗 将varchar值“”转换为int数据类型时,转换失败。 我读了一些关于使用CAST转换为NVARCHAR的帖子,但是我在做同样的事情时遇到了语法错误。具体在哪里可以应用 SELECT DOCUMENT_ID FROM ( S

我有以下问题。由于某种原因,我使用多个SELECT语句作为我使用的工具,需要在第一行中使用FROM子句和一个SELECT值

文档ID是一个整型列。我需要文档ID作为逗号分隔的值,作为此查询的输出。(例如123477866475835)

问题是我遇到了以下错误。有人能帮忙吗

将varchar值“”转换为int数据类型时,转换失败。 我读了一些关于使用CAST转换为NVARCHAR的帖子,但是我在做同样的事情时遇到了语法错误。具体在哪里可以应用

SELECT DOCUMENT_ID FROM (
SELECT STUFF
(
    (
        SELECT ',' + em.DOCUMENT_ID 
        FROM(
            SELECT distinct a.DOCUMENT_ID AS DOCUMENT_ID FROM A_DOCUMENT a
            inner join PRICE_RECORD wk ON a.DOCUMENT_ID = wk.DOCUMENT_ID
            WHERE a.APPROVAL_STATUS = 'Submitted'
            ) em
        ORDER BY em.DOCUMENT_ID FOR XML PATH('')
    ),
     1, 1, '') AS DOCUMENT_ID
) AS Output

谢谢。

如果
DOCUMENT\u ID
int
,则将
'、'+em.DOCUMENT\u ID
替换为以下内容之一:

CONCAT(',', em.DOCUMENT_ID) --SQL Server 2012+
',' + CONVERT(varchar(10),em.DOCUMENT_ID)
--Or, if you prefer CAST
',' + CAST(em.DOCUMENT_ID AS varchar(10))

int
的值高于
varchar
,因此您的逗号(
,“
)被隐式转换为
int
,这导致了转换错误。

如果
文档ID
int
,则将
,“+em.DOCUMENT ID
替换为以下内容之一:

CONCAT(',', em.DOCUMENT_ID) --SQL Server 2012+
',' + CONVERT(varchar(10),em.DOCUMENT_ID)
--Or, if you prefer CAST
',' + CAST(em.DOCUMENT_ID AS varchar(10))

int
的值高于
varchar
,因此您的逗号(
,“
)被隐式转换为
int
,这导致了转换错误。

非常感谢您。感谢您的快速帮助。我的代码现在可以用了。非常感谢你。感谢您的快速帮助。我的代码现在可以工作了。