sql – 从单列中选择多行到单行
发布时间:2021-03-07 18:25:32 所属栏目:MsSql教程 来源:网络整理
导读:我想编写一个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 | (编辑:呼伦贝尔站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 数据库设计 – 在逻辑/布尔数据库字段中使用[0,1]与[“Y”,
- entity-framework – 从数据库更新模型(数据库优先)
- 双胜:欣赏时尚数码mp3,“投票”选美送给您!
- 数据库设计 – SSD是否会降低数据库的实用性
- sql-server-2005 – 从SQL Server 2008降级到2005
- Office 2003:过于激进的革新软件?
- sql-server-2005 – 如何为逗号分隔的代码字符串获取相应的
- sql – Oracle 11g:取消激活多列并包含列名
- sql-server – 调用存储过程VBA
- sql-server – SQL Server 2008:找出表中的主键/外键?
