У меня есть следующие данные:Группировка Иерархических данных (parentID + ID) и текущей суммы?
ID parentID Text Price
1 Root
2 1 Flowers
3 1 Electro
4 2 Rose 10
5 2 Violet 5
6 4 Red Rose 12
7 3 Television 100
8 3 Radio 70
9 8 Webradio 90
Я пытаюсь сгруппировать эти данные с Reporting Services 2008 и имеют сумму цены на группу уровня 1 (Цветы/Electro) и для уровня 0 (Root) ,
У меня есть таблица, сгруппированная по [ID] с рекурсивным родителем [parendID], и я могу вычислить сумму для уровня 0 (только одна строка в таблице вне группы), но как-то я не удалось создать сумму на группу, поскольку SRSS «создает» группы на уровне. Мой желаемый результат выглядит так:
ID Text Price
1 Root
|2 Flowers
|-4 Rose 10
|-5 Violet 5
| |-6 Red Rose 12
| Group Sum-->27
|3 Electro
|-7 Television 100
|-8 Radio 70
|-9 Webradio 90
Group Sum-->260
----------------------
Total 287
(отступа ID только что добавленном для осветления уровня)
С моим нынешним подходом я не могу получить суммы группы, так что я понял, я должен был бы следующую структуру данных :
ID parentID Text Price level0 level1 level2 level3
1 Root 1
2 1 Flowers 1 1
3 1 Electro 1 2
4 2 Rose 10 1 1 1
5 2 Violet 5 1 1 2
6 4 Red Rose 12 1 1 1 1
7 3 Television 100 1 2 1
8 3 Radio 70 1 2 2
9 8 Webradio 90 1 2 2 1
при наличии вышеуказанной конструкции можно создать внешнюю группировку level0, с детьми группировок level1, level2, LEVEL3 соответственно. Когда теперь, имея «групповую сумму» на уровне 1, а общая сумма вне группы, я ТОЧНО, что хочу.
Мой вопрос заключается в следующем: Как я либо достигну желаемого результата с моей текущей структуры данных, или как преобразовать свою текущую структуру данных (? Наружная левая присоединяется) в «новой структуры данных» временно - так что я могу запустить отчет из временной таблицы?
Спасибо, что нашли время, Деннис
Есть ли предел рекурсии, которую вы можете иметь? Вы упомянули 4 уровня в своем примере. Если он ограничен, вы можете вслепую левый присоединиться 4 раза, иначе вам, вероятно, придется сделать функцию или добавить столбец «LevelNumber». –
4 уровня являются максимальными, я должен был указать, что –
Думаете, вы можете получить больше ответов, если вы пометите его как «t-sql». –