您可以使用STUFF
這個:
Select Stuff
(
(
Select ',' + Convert(Varchar, S.Id)
From Employee E
Join Skills S On S.EmployeeId = E.Id
Where E.Name = 'Abc'
And E.Location = 'London'
And S.Skills In ('AAA', 'BBB')
For Xml Path ('')
), 1, 1, ''
) As Skills
編輯:SQL小提琴似乎不想在此刻和我一起工作,但使用下面的數據(從OP),它得到的正確的結果:
Create Table Skills
(
Id int,
skills varchar (3),
employeeid int
);
Create Table Employee
(
Id int,
Name varchar (10),
location varchar (10)
);
insert skills values
(10 ,'AAA', 1),
(11 ,'BBB', 1),
(13 ,'CCC', 1),
(14 ,'DDD', 1);
insert employee values
( 1 ,'Abc' , 'London'),
( 2 ,'Xyz', 'Uk');
Select Stuff
(
(
Select ',' + Convert(Varchar, S.Id)
From Employee E
Join Skills S On S.EmployeeId = E.Id
Where E.Name = 'Abc'
And E.Location = 'London'
And S.Skills In ('AAA', 'BBB')
For Xml Path ('')
), 1, 1, ''
) As Skills
![Results](https://i.stack.imgur.com/IEzaw.png)
編輯#2新數據;相同的查詢:
Create Table Skills
(
Id int,
skills varchar (3),
employeeid int
);
Create Table Employee
(
Id int,
Name varchar (10),
location varchar (10)
);
insert skills values
(12 ,'AAA', 7 ),
(13 ,'BBB', 7 ),
(14 ,'CCC', 7 ),
(15 ,'AAA', 8 ),
(16 ,'BBB', 8 ),
(17 ,'CCC', 8 ),
(18 ,'AAA', 9 ),
(19 ,'BBB', 9 ),
(20 ,'CCC', 9 ),
(21 ,'AAA', 10 ),
(22 ,'BBB', 10 ),
(20 ,'CCC', 10 );
insert employee values
(7 ,'Abc', 'London' ),
(8 ,'Xyz', 'London' ),
(9 ,'Xyz', 'USA' ),
(10 ,'Abc', 'USA' );
Select Stuff
(
(
Select ',' + Convert(Varchar, S.Id)
From Employee E
Join Skills S On S.EmployeeId = E.Id
Where E.Name = 'Abc'
And E.Location = 'London'
And S.Skills In ('AAA', 'BBB')
For Xml Path ('')
), 1, 1, ''
) As Skills
![Results #2](https://i.stack.imgur.com/ojVBo.png)
,結果這次是12,13
- 根據您的條件,這是正確的:
員工7
是唯一一個與Abc
從London
,並12
和13
是技能AAA
和BBB
。
可能的重複[如何將多行組合成以逗號分隔的SQL Server 2005列表?](http://stackoverflow.com/questions/180032/how-can-i-combine-multiple-rows- into-a-comma-delimited-list-in-sql-server-2005) – JamieD77