SSRS 2008 - 报告排序为父母&儿童和儿童按字母顺序排列

时间:2014-07-02 10:40:30

标签: sorting ssrs-2008 sql-server-2008

我的报告中有一个'List'元素,其数据来自'Dataset1'。 Dataset1的SQL查询是

SELECT SNo.,Name,TreeStructurePath FROM dbo.SampleTable WHERE .... *ORDER BY TreeStructurePath*

输出:

SNo.    Name         TreeStructurePath
0       Root         .
1       Austin       .A001
2       Wesley       .A001.B001
3       Ronald       .A001.B001.G003
4       Claire       .A001.B001.M005
5       Dolbie       .A001.C001
6       Belle        .D001

此数据按上述顺序显示,因为它按“TreeStructurePath”字段排序。但我的要求是在我的报告中输出。

SNo.    Name         TreeStructurePath
0       Root         .
1       Austin       .A001
2       Dolbie       .A001.C001
3       Wesley       .A001.B001
4       Claire       .A001.B001.M005
5       Ronald       .A001.B001.G003
6       Belle        .D001

这里,'。'是根。 A001,D001是'。'的子组。 B001和C001是A001的孩子。 B001有两个孩子G005,M005。这些在SQL查询中排序。但在我的报告中,要求父组(Root)应该在顶部,但他们的子项应按字母顺序排序(A001-B001 [G003,M005],然后是C001; D001)。那可能吗?如果是这样,如何在SSRS 2008 reoport中实现这一目标?

我不在乎'TreeStructurePath'是否按字母顺序排列。我想按字母顺序排列“姓名”,即

Root
   ----A001 (Root child - Austin)
    --------C001 (A's child - Dolbie)
    --------B001 (A's child - Wesley)
                ------------M003 (B's child - Claire)
                ------------G005 (B's child - Ronald)
   ----D001 (Root child - Belle)

(忽略缩进) 我正在使用'TreeStructurePath'列出他们父母下面的孩子。如果我不使用那个孩子会被列在某个地方,但不会低于他们的父母。希望你能得到我所要求的。

PS:如果不是“列表”项目,请为“Tablix”(包含3个字段)建议解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在报表查询中,您可以沿着这些行执行某些操作来解析树结构路径的每个分组,以便您可以对报表或数据结果进行排序。

   SELECT SNo ,Name, TreeStructurePath, 
            SUBSTRING(TreeStructurePath, 2, 4) AS Tree1,
            SUBSTRING(TreeStructurePath, 7, 4) AS Tree2, 
            SUBSTRING(TreeStructurePath, 12, 4) AS Tree3
      FROM dbo.SampleTable
           WHERE ....
       Order by Tree1 ASC, Tree2 ASC, Tree3 DESC