使用SQL查询展平一对多关系

时间:2015-07-30 00:06:53

标签: sql sql-server-2008 join

我有一个非常简单的数据集,我希望能够查询并将结果作为单个记录。

ID | FirstName | LastName | HeroName | Skill1       | Skill2      | Skill3       | ... | Skilln
42   Bruce     | Wayne    | Batman   | Martial Arts | Engineering | Intimidation

我希望结果是

SELECT m.ID, m.FirstName, m.LastName, m.HeroName, s.Skill
FROM Members m
JOIN Skills s
ON m.ID = s.ID
WHERE m.ID = 42 and s.Skill IS NOT NULL

到目前为止我的查询是

ID | FirstName | LastName | HeroName | Skill
42 | Bruce     | Wayne    | Batman   | Martial Arts
42 | Bruce     | Wayne    | Batman   | Engineering
42 | Bruce     | Wayne    | Batman   | Intimidation

返回

{{1}}

没有迭代结果,只提取我想要的字段有没有办法将其作为单个记录返回?我已经看过关于PIVOT和XmlPath的主题,但是根据我所读到的,这些都不是我想要的。我想要返回任意数量的技能并且不返回空值。

编辑:

PIVOT的问题在于它会将其中一行转换为列标题。如果有一种方法可以填写通用列标题而不是它可能有效。

0 个答案:

没有答案