小编B.M*_*thy的帖子

SQL 行与 XML PATH 和 STUFF 的连接给出聚合 sql 错误

我正在尝试查询两个表并获得如下结果:

Section    Names
shoes      AccountName1, AccountName2, AccountName3
books      AccountName1
Run Code Online (Sandbox Code Playgroud)

这些表是:

CREATE TABLE dbo.TableA(ID INT, Section varchar(64), AccountId varchar(64));

INSERT dbo.TableA(ID, Section, AccountId) VALUES
(1 ,'shoes','A1'),
(2 ,'shoes','A2'),
(3 ,'shoes','A3'),
(4 ,'books','A1');

CREATE TABLE dbo.TableB(AccountId varchar(20), Name varchar(64));

INSERT dbo.TableB(AccountId, Name) VALUES
('A1','AccountName1'),
('A2','AccountName2'),
('A3','AccountNAme3');
Run Code Online (Sandbox Code Playgroud)

我看到一些回答说使用“XML PATH”和“STUFF”来查询数据以获得我正在寻找的结果,但我认为缺少一些东西。我尝试了以下查询并收到错误消息:

列“a.AccountId”在选择列表中无效,因为它既不包含在聚合函数中也不包含在 GROUP BY 子句中。

我在任一查询的 SELECT 子句中都没有它,但我认为错误是因为 AccountId 在 TableA 中不是唯一的。

这是我目前正在尝试正常工作的查询。

SELECT section, names= STUFF((
    SELECT ', ' + Name FROM TableB as b 
WHERE AccountId = b.AccountId
FOR XML PATH('')), 1, 1, …
Run Code Online (Sandbox Code Playgroud)

xml sql-server sql-server-2008-r2 concat

9
推荐指数
2
解决办法
7万
查看次数

标签 统计

concat ×1

sql-server ×1

sql-server-2008-r2 ×1

xml ×1