加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 从单列中选择多行到单行

发布时间:2021-03-07 20:09:36 所属栏目:编程 来源:网络整理
导读:我想编写一个SQL Server查询,它将从以下示例表中检索数据: Table: PersonID Name-- ----1 Bill2 Bob3 JimTable: SkillID SkillName-- -----1 Carpentry2 Telepathy3 Navigation4 Opera5 KarateTable: SkillLinkID PersonID SkillID-- -------- -------1 1 22

我想编写一个SQL Server查询,它将从以下示例表中检索数据:

Table: Person
ID      Name
--      ----
1       Bill
2       Bob
3       Jim

Table: Skill
ID      SkillName
--      -----
1       Carpentry
2       Telepathy
3       Navigation
4       Opera
5       Karate

Table: SkillLink
ID      PersonID        SkillID
--      --------        -------
1       1               2
2       3               1
3       1               5

如您所见,SkillLink表的目标是将各类(也许是多个或没有)手艺与小我私人匹配.我想用我的查询实现的功效是:

Name    Skills
----    ------
Bill    Telepathy,Karate
Bob     
Jim     Carpentry

因此,对付每小我私人,我想要一个逗号插手的列表,个中包括指向他的全部SkillNames.这也许是多项手艺或基础没有手艺.

这显然不是我事变的现实数据,但布局是一样的.

也请随意为这个题目提议一个更好的问题作为评述,由于简捷地说它是我题目的一部门.

办理要领

您将行使FOR XML PATH:
select p.name,Stuff((SELECT ',' + s.skillName 
         FROM skilllink l
         left join skill s
           on l.skillid = s.id 
         where p.id = l.personid
         FOR XML PATH('')),1,'') Skills
from person p

见SQL Fiddle with Demo

功效:

| NAME |            SKILLS |
----------------------------
| Bill | Telepathy,Karate |
|  Bob |            (null) |
|  Jim |         Carpentry |

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读