我想编写一个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
结果:
| NAME | SKILLS | ---------------------------- | Bill | Telepathy,Karate | | Bob | (null) | | Jim | Carpentry |
原文地址:https://www.jb51.cc/mssql/84048.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。