显示一对多的关系

时间:2015-11-21 14:30:41

标签: excel

我试图在Excel工作表中显示SQL Server中的数据,以便操作用户可以理解数据。以下是SQL Server中数据的外观:

{{1}}

正如您所看到的,数据库包含一个人与他们在组织中扮演的角色之间的一对多关系。

在我的Excel中,我想只显示一次人物记录,并以某种方式显示此人扮演多个角色,这些角色就是这些角色。

1 个答案:

答案 0 :(得分:3)

那里有很多组连接方法。有些使用动态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

我不确定组织如何适应您的问题,但在我看来,这是该角色的一部分。您应该能够在pr.Role + ' ' + pr.Organization逻辑中使用case