我如何更改sql获取联合结果

时间:2019-07-04 14:32:54

标签: sql-server

我如何更改选择...

学生
ID名称家庭电话
1 A Neo 023 **
2 A Cit 012 **
3 B Dti 12 **
4 .. ... ...

我有一个选择的SQL查询,例如:

SELECT
    name,
    home,
    tel
FROM Student
WHERE id<4;

结果就像↓
命名家庭电话
Neo 023 **
Cit 012 **
B Dti 12 **

但是我想得到类似
的结果 命名家庭电话
Neo,Cit 023 **,012 **
B Dti 12 **

2 个答案:

答案 0 :(得分:0)

您可以使用CURSOR或CTE并在home和tel字段中串联字符串。有关示例,请参见here

答案 1 :(得分:0)

尝试以下操作:

declare @Student table (id int, name varchar(10), home varchar(100), tel varchar(10))
insert into @Student select 1, 'A', 'Neo', '023**' 
insert into @Student select 2, 'A', 'Cit', '012**'
insert into @Student select 3, 'B', 'Dti', '12**'

select * from @Student

select name, stuff((
        select distinct ',' + u.home
        from @Student u
        where u.name = s.name
        for xml path('')),1,1,'') as home, stuff((
        select distinct ',' + u.tel
        from @Student u
        where u.name = s.name
        for xml path('')),1,1,'') as tel
from @Student s
group by name