使用动态层次结构SQL Server

时间:2016-02-12 12:20:13

标签: sql-server recursion dynamic hierarchy hierarchical-data

我在SQL Server中有以下数据集

层次结构表:

 Report   |   Immediate Parent
 Child1       Parent1
 Child2       Parent1
 Child3       Parent2
 Parent1      Grandparent1
 Parent2      Grandparent1

数据表(仅适用于基础级别的孩子):

Report   |   Sales
Child1       1000
Child2       1000
Child3       1000

由此我需要创建一个包含

的数据集
Report      |   Sales
Parent1         2000
Parent2         1000
Grandparent1    3000

我不知道会有多少层次结构,可能会很棒* 10位祖父母。我对这个问题的解决方案是使用递归和动态SQL来为每个层次结构级别创建临时表,即

  • 为父母创建临时表,将数据表连接到层次结构表并求和(销售)

  • 为祖父母创建临时表,将父临时表连接到层次结构表并将总和(销售额)

  • 冲洗并重复直至没有行影响(@@ rowcount)

  • 将所有临时表合并到永久表中

然而,通过阅读论坛,我理解:

  • 应避免递归,
  • 应避免使用动态SQL,
  • @@ Rowcount应避免使用

我的问题是,如何在不使用所有这些不良做法的情况下解决问题?

0 个答案:

没有答案