【发布时间】:2015-04-16 06:41:57
【问题描述】:
我有一张表,其中保存了有关某些分支和层次结构的信息。这些信息不是以可用于维度建模的方式存储的,因此经过多次转换和提取后,我最终得到了:
n0 是第一层,n11 是最高层。 问题是层次结构不能像这样遍历:
SELECT
distinct
nelem.Element n0,
primul.Element n1,
doilea.Element n2,
treilea.Element n3,
patrulea.Element n4
FROM
[MIS].[dbo].[BedrockImportBST] nelem
left join [BedrockImportBST] primul on primul.Element=nelem.Value1 and primul.LineType in ('e','p')
left join [BedrockImportBST] doilea on doilea.Element=primul.Value1 and doilea.LineType in ('e','p')
left join [BedrockImportBST] treilea on treilea.Element=doilea.Value1 and treilea.LineType in ('e','p')
left join [BedrockImportBST] patrulea on patrulea.Element=treilea.Value1 and patrulea.LineType in ('e','p')
是否有可能为这个解决方案分配父子关系 id,以便遍历是递归的?
【问题讨论】:
-
只要层次结构中的级别数是固定的,并且您还拥有每个级别的 ID,而不仅仅是我在屏幕截图中看到的标签,您就可以构建具有单独属性的扁平维度对于每个级别。在正常情况下,平面层次结构将比 SSAS 中的父子层次结构执行得更好。但是你到底想达到什么目的呢?
-
Salut George, voi continua in engleza pentru a intelege si restul daca vor avea nevoie。我没有任何 ID,只有标签,我想生成一个结构为 ID、Parent_Id、Name... 的视图正如您在第一个 pritnscreen 中看到的那样,047 可以有许多层次结构路径(例如:047/ Inland( 100%) / Konzern (100%) / Alle BST-Elemente si 047 / Inland (ant.) / Europa (ant.) / Welt (ant.) / Alle BST-Elemente )
-
@GeorgeTanasie 我在想可能在 cte 或一段时间内遍历......从右到左,Alle BST-Elemente 将是最高级别,047 将是最低级别,但我无法弄清楚我该如何构建它
标签: sql-server parent-child hierarchy recursive-query dimensional