#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