返回每个组至少出现一次值的所有行

时间:2015-11-09 02:17:48

标签: sql-server-2008

我有一张表格,其中列出了分配给他们的个人和联系人组。个人只能属于一个群体,但他们可以有多个联系人,反之亦然。示例如下:

+-------+------------+---------+
| Group | Individual | Contact |
+-------+------------+---------+
| A     | J          | X       |
| A     | K          | Y       |
| A     | K          | Z       |
| B     | L          | X       |
| B     | M          | Y       |
| C     | N          | Y       |
| C     | N          | Z       |
| C     | O          | Z       |
| C     | P          | Z       |
+-------+------------+---------+

我正在努力为联系人提供一份报告,列出一个群体中的所有个人,这些群体中至少有一个人出现在这些群体中。因此,对于上述内容,输出将如下所示(按联系人排序):

+-------+------------+---------+
| Group | Individual | Contact |
+-------+------------+---------+
| A     | J          | X       |
| A     | K          | X       |
| B     | L          | X       |
| B     | M          | X       |
| A     | J          | Y       |
| A     | K          | Y       |
| B     | L          | Y       |
| B     | M          | Y       |
| C     | N          | Y       |
| C     | O          | Y       |
| C     | P          | Y       |
| A     | J          | Z       |
| A     | K          | Z       |
| C     | N          | Z       |
| C     | O          | Z       |
| C     | P          | Z       |
+-------+------------+---------+

在这里我们可以看到联系人X被分配给个人J(组A)和个人L(组B)。 A组有2个人(J和K),B组有2个(L和M),因此联系人X将在他们的报告中看到个人J,K,L和M(A组和B组中的每个人)。

我认为这需要Group然后Contact的派生表分组,但我无法理解它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

虽然玩了几件事,我想我可能已经解决了这个问题。这里的关键链接是组,因此通过基于联系人组和个人组创建一些派生表,然后链接两个我得到以下结果,给出了所需的结果:

pluralize

不确定这是否是最好的方法,但它有效。