动态分组分层数据

时间:2013-10-07 07:37:05

标签: sql-server-2012 aggregate-functions hierarchical-data dynamic-sql

我有以下表结构:

ID Criteria01 Criteria02 Criteria03 ... CriteriaN Score

并且需要创建一个按层次标准返回聚合得分结果的过程。

例如,如果标准是

Criteria01 -> Criteria03 -> ID

我需要以下面的分层格式返回数据:

Criteria03 Score 
           Criteria01 Score
                     ID Score

或如果我有以下样本数据:

enter image description here

结果将是:

enter image description here

说明:

(层级1)计算Criteria01或

中每个值的平均得分
SELECT [Criteria01]
      ,AVG([SCORE])
FROM DataSource
GROUP BY [Criteria01]

(层级2)计算Criteria03或

中每个值的平均得分
SELECT [Criteria03]
      ,AVG([SCORE])
FROM DataSource
GROUP BY [Criteria03]

(层级3)按ID显示得分。

以上显示了如何进行计算。剩下的就是将ID行与其父Criteria03行匹配,然后将Criteria03行与其父(Criteria01)行匹配。

因此,我可以使用不同的层次标准,并且需要使用层级级别列返回结果。

请注意,我不是在寻找,也不需要我提供的样本数据的工作解决方案,因为在我的实际案例中,事情变得更加复杂。

我正在寻找的是从已经处于这种情况的人那里获得良好做法的建议或想法。

0 个答案:

没有答案