基于多查找和动态列的报告生成

时间:2014-04-22 10:34:13

标签: excel reporting-services report reporting ssrs-tablix

我在Excel尝试生成的报告中有点困惑,希望有人可以提供帮助。 以下是我想要做的总结:

  • 表1有一列名为people(它基本上是一个列表 员工)
  • 表2有一列称为国家(它基本上是一个 相关国家名单)
  • 表3有三列名为person, 国家和日期。

每次审核某个国家/地区时,每个人都有一个条目。

所以数据看起来像是:

PERSON      |  COUNTRY         |    DATE
John        |   uk             |    10/01/2013
Paul        |   uk             |    15/01/2013
John        |   France         |    15/01/2013
Bob         |   Spain          |    16/01/2013

我需要制作的报告显示谁已经/没有检查过每个国家/地区。 所以列将是'人',英国,法国,西班牙(以及国家表中的任何其他唯一值)。

如果每个人在相关列中都有一个是/否,那么将会有一个单行,如果该人已经审查了该国家,即表3包含的值与该人和国家的值相匹配。

所以要明确报告应该类似于:

PERSON      |  UK       |  FRANCE   |  SPAIN   
John        |   Yes     |   Yes     |   No
Paul        |   Yes     |   No      |   No
Bob         |   No      |   No      |   Yes

总之,我可以将其分为两个问题:

  1. 如何生成一个表,其中包含另一个表中的每个唯一值的列(上面说明中的国家/地区)

  2. 如何进行双重查询,即IF EXISTS in TABLE 3 ‘person’=john & ‘country’=uk然后返回'是',否则返回'否'

  3. 我很高兴留在Excel或使用SQL报告,即首先将我的数据移至SQL

1 个答案:

答案 0 :(得分:0)

这是一种不稳定的公式,但=sumproduct()会进行双重查询。

=IF(SUMPRODUCT(--($K$2:$K$5=$K13), --($L$2:$L$5=M$10)),"Yes","No")

人/国家/日期表位于K1:M5范围内,结果表位于K10:N13范围内。我打开了一本工作簿,把它放在角落里。 (没有人把副产品放在角落里)

要点是,--将真和假变为1或0. sumproduct将逐行乘以两个结果。如果两者都是真的,那么你得到的是1 x 1和漏斗,然后返回到是和否的if。你必须注意公式中的$