首页 > 解决方案 > 出现错误“选择列表中只能指定一个表达式...”

问题描述

我正在尝试使用以下代码向视图添加一列:

SELECT ';' + CONTEXT as DriverNotes,

(STUFF((SELECT CustomerID FROM Notes E2 WHERE E2.CustomerID IN (Notes.CustomerID)
FOR XML PATH(''), TYPE, ROOT).value('root[1]','nvarchar(5)'),1,0,'')) as CustomerID FROM NOTES

就其本身而言,它工作得很好。但是,当我在 View 中运行它时,出现以下错误:

“当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。”

我意识到这里的代码试图调用两列,这就是给我错误的原因,但我只想要一个,那就是 CONTEXT。我需要它与 Notes.CustomerID 相关联,但查询中没有出现该列。

我对此还是很陌生,所以任何帮助将不胜感激。

标签: sqlsql-serverselect

解决方案


检查此查询。我认为这就是你想要的:

SELECT Notes.CustomerId, 
    STUFF(
            (SELECT ';' + CONTEXT FROM Notes E2 
                WHERE E2.CustomerId = Notes.CustomerId
                FOR XML PATH ('')), 1, 1, ''
            ) DriverNotes
FROM Notes /*Probably it should be Customer table */
GROUP BY Notes.CustomerId

推荐阅读