Tôi đang cố gắng truy vấn hai bảng và nhận được kết quả như sau:
Section Names
shoes AccountName1, AccountName2, AccountName3
books AccountName1
Các bảng là:
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');
Tôi đã thấy một vài câu hỏi được trả lời rằng sử dụng "XML PATH" và "STUFF" để truy vấn dữ liệu để có được kết quả mà tôi đang tìm kiếm, nhưng tôi nghĩ còn thiếu một cái gì đó. Tôi đã thử truy vấn bên dưới và nhận được thông báo lỗi:
Cột 'a.AccountId' không hợp lệ trong danh sách chọn vì nó không có trong hàm tổng hợp hoặc mệnh đề GROUP BY.
Tôi không có nó trong mệnh đề SELECT của một trong hai truy vấn, nhưng tôi cho rằng lỗi là do AccountId không phải là duy nhất trong TableA.
Đây là truy vấn tôi hiện đang cố gắng để làm việc chính xác.
SELECT section, names= STUFF((
SELECT ', ' + Name FROM TableB as b
WHERE AccountId = b.AccountId
FOR XML PATH('')), 1, 1, '')
FROM TableA AS a
GROUP BY a.section