[英]Showing one-to-many relationship
我試圖在Excel工作表中顯示SQL Server中的數據,以便操作用戶可以理解數據。 以下是SQL Server中數據的外觀:
PersonId Name Address Role Organization
1 John Smith 123 Main St Donor Library
1 John Smith 123 Main St Member Ballet
2 Jane Doe 333 Main St Member Orchestra
如您所見,數據庫包含一個人與他們在組織中扮演的角色之間的一對多關系。
在我的Excel中,我想只顯示一次人物記錄,並以某種方式顯示此人扮演多個角色,這些是角色。
那里有很多組連接方法。 有些使用動態sql,有些則使用xml。 如果您預先知道一個簡短的角色列表,這是一個簡單的。 這樣您就可以輕松控制列表的順序。
select *,
(
select
substring(
coalesce(min(case when r.Role = 'Donor' then ', Donor' end), '') +
coalesce(min(case when r.Role = 'Member' then ', Member' end), '') +
...
coalesce(min(case when r.Role = 'XXXXXX' then ', XXXXXX' end), '')
, 3, 300)
from PersonRoles pr
where pr.PersonId = p.PersonId
) as Roles
from Person p
我不確定組織是如何適應你的問題但在我看來它是角色的一部分。 您應該能夠在case
邏輯中使用pr.Role + ' ' + pr.Organization
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.