Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将字段值与子查询合并错误:子查询返回了多个值。当子查询出现时,这是不允许的_Sql Server_Subquery - Fatal编程技术网

Sql server 将字段值与子查询合并错误:子查询返回了多个值。当子查询出现时,这是不允许的

Sql server 将字段值与子查询合并错误:子查询返回了多个值。当子查询出现时,这是不允许的,sql-server,subquery,Sql Server,Subquery,我使用以下SQL语句创建了一个视图: SELECT InventoryID, AccountCode, Description, Notes + N'N ' + (SELECT Deployment FROM dbo.Deployment WHERE (dbo.Inventory.InventoryID = InventoryID)) AS Remarks FROM dbo.Inventory 但这会返回一个错误

我使用以下SQL语句创建了一个视图:

SELECT InventoryID, AccountCode, Description, Notes + N'N ' +
            (SELECT Deployment
            FROM    dbo.Deployment
            WHERE (dbo.Inventory.InventoryID = InventoryID)) AS Remarks
FROM   dbo.Inventory
但这会返回一个错误
子查询返回的值超过1。当子查询出现时,这是不允许的。

下面是我想要的表结构和示例输出:

是否可以将
Notes
字段的值与具有多个值的子查询连接起来

更新:

这里是错误。我还将数据库结构包括在图像中


造成问题的不是
注释
,而是
部署
。更准确地说,事实是部署表中有多行具有相同的库存id。 您可以使用
STUFF
FOR XML
从子查询返回连接字符串的单个结果,如下所示:

SELECT  InventoryID, 
        AccountCode, 
        Description, 
        Notes + N'N ' +
        (
            SELECT STUFF(
                (SELECT ',' + Deployment
                FROM dbo.Deployment
                WHERE t.InventoryID = InventoryID
                FOR XML PATH(''))
                , 1, 1, '')
        ) AS Remarks
 FROM   dbo.Inventory t

有关stuff和For xml如何协同工作来连接选定行中的字符串的说明,请阅读问题的根源不是
注释,而是部署
。更准确地说,事实是部署表中有多行具有相同的库存id。
您可以使用
STUFF
FOR XML
从子查询返回连接字符串的单个结果,如下所示:

SELECT  InventoryID, 
        AccountCode, 
        Description, 
        Notes + N'N ' +
        (
            SELECT STUFF(
                (SELECT ',' + Deployment
                FROM dbo.Deployment
                WHERE t.InventoryID = InventoryID
                FOR XML PATH(''))
                , 1, 1, '')
        ) AS Remarks
 FROM   dbo.Inventory t

有关stuff和For xml如何协同工作以连接选定行中的字符串的解释,请阅读

感谢您的回复,但我在“(”附近的WHERE子句中遇到了此错误
错误。from子句中的错误:在“Inventory”附近。无法解析查询文本。
仍然在“WHERE子句附近”中遇到了此错误
错误(“.FROM子句中的错误:靠近“t”。无法分析查询文本。
我在链接上看到了您的代码,它正在工作。为什么它在我的计算机上不工作?请参阅我更新的帖子。我在图像中包含了我的数据库结构。我不知道。请尝试在“新建查询”窗格中执行查询,而不是在“创建视图”中执行查询。”窗格中,查看发生了什么。是的,它可用于新查询。但我希望将此保存在视图中,以便基于视图创建报表。感谢您的回复,但我在靠近“”的WHERE子句中遇到了此错误
错误(”。FROM子句中的错误:靠近“Inventory”。无法分析查询文本。
仍然在靠近“”的WHERE子句中遇到了错误
错误(“.FROM子句中的错误:靠近“t”。无法分析查询文本。
我在链接上看到了您的代码,它正在工作。为什么它在我的计算机上不工作?请参阅我更新的帖子。我在图像中包含了我的数据库结构。我不知道。请尝试在“新建查询”窗格中执行查询,而不是在“创建视图”中执行查询。”窗格中,查看发生了什么。是的,它适用于新查询。但我希望将此保存在视图中,以便可以基于视图创建报告。