SSRS 2008 — Сортировка отчетов как родительских и дочерних, так и дочерних в алфавитном порядке

#sorting #ssrs-2008 #sql-server-2008

#сортировка #ssrs-2008 #sql-server-2008

Вопрос:

В моем отчете есть элемент ‘List’, данные для которого взяты из ‘Dataset1’. SQL-запрос Dataset1 является

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?

Мне все равно, находится ли ‘TreeStructurePath’ в алфавитном порядке или нет. Я хочу ‘Name’ в алфавитном порядке, т.Е.,

 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: Если не для элемента «Список», пожалуйста, предложите решение для «Табликса» (содержащего 3 поля).

Заранее спасибо.

Ответ №1:

В запросе отчета вы можете выполнить что-то вроде этих строк, чтобы проанализировать каждую группировку вашего treestructurepath, чтобы вы могли выполнить сортировку в таблице отчета или результатах данных.

    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