我在MS Sql数据库中有3个表,我正在尝试将其连接到带有查询的单个表中,以便我可以提取到Excel中。
我的表是Person,Industry和PersonIndustry(连接表)。
人有一个人,行业有行业,而人工业表只是:
PersonID,IndustryID。
示例记录:
人员表:
1, John Smith
2, Bob Jones
3. Jill Jane
行业表:
1, Medical
2, Insurance
3, Construction
PersonIndustry:
1,1
1,2
3,1
我想要的输出是:
Personid,名称,行业
1, John Smith, Medical:Insurance
2, Bob Jones, N/A
3. Jill Jane, Medical
我该怎么做?
答案 0 :(得分:1)
由于您需要Person
表left join
中其他两个表的所有行。
然后使用for xml path
技巧在结果中对concat进行分组。试试这个。
;WITH cte
AS (SELECT p.id,
p.NAME AS p_name,
i.NAME AS i_name
FROM person p
LEFT JOIN PersonIndustry pin
ON p.id = pin.person_id
LEFT JOIN Industry i
ON i.id = pin.indus_id)
SELECT id AS P_id,
p_name,
Stuff((SELECT ',' + i_name
FROM cte b
WHERE a.id = b.id
FOR xml path('')), 1, 1, '') AS i_name
FROM cte a
GROUP BY id,
p_name