Sql SSRS中亲子关系的总和
下表称为DimAufbau 如您所见,此表使用“relation”字段保存父对象的id来保存父子关系 此表中的每个节点都可以包含更多节点或帐户 正如您所看到的,Betriebliche有一些关联的帐户,但Erlöse和GuV不能有帐户(实际上,这是我在使用SSA时发现的一个限制,但现在它不是问题) Dimaufafu与账户之间的关联如下: 现在,问题是:我们有一个名为ReportKore的SSRS报告,它必须显示Aufbau表的树结构,显示一些字段的总和 填充该报告的数据集使用以下查询,但它不显示父节点的总和,因为它们没有关联的帐户:Sql SSRS中亲子关系的总和,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,下表称为DimAufbau 如您所见,此表使用“relation”字段保存父对象的id来保存父子关系 此表中的每个节点都可以包含更多节点或帐户 正如您所看到的,Betriebliche有一些关联的帐户,但Erlöse和GuV不能有帐户(实际上,这是我在使用SSA时发现的一个限制,但现在它不是问题) Dimaufafu与账户之间的关联如下: 现在,问题是:我们有一个名为ReportKore的SSRS报告,它必须显示Aufbau表的树结构,显示一些字段的总和 填充该报告的数据集使用以下查询,
;WITH aufbautree(id, relation, Bezeichnung, AufbauLevel) AS (
SELECT
id,
relation,
Bezeichnung,
1 AufbauLevel
FROM [dbo].[DimAufbau]
WHERE
relation IS NULL
and ([DimAufbau].id in (@aufbau))
UNION ALL
SELECT
da.id,
da.relation,
da.Bezeichnung,
tr.AufbauLevel + 1
FROM
[dbo].[DimAufbau] da
INNER JOIN aufbautree tr
ON da.relation = tr.id)
SELECT
at.*,
fk.BetragIst,
fk.BetragPlan,
dkbez.Bezeichnung AS KontoBezeichnung
FROM
aufbautree at
LEFT JOIN DimAufbauKonto auk
ON auk.AufbauId = at.id
LEFT JOIN DimKonto dk
ON auk.KontoID = dk.id
LEFT JOIN DimKontoBezeichnung AS dkbez
ON dkbez.Id = dk.BezeichnungId
LEFT JOIN FaktKore fk
ON fk.DimKontoId = dk.id
LEFT JOIN DimKostenstelle AS dko
ON fk.DimKostenstelleId = dko.Id
LEFT JOIN DimMandant AS dm
ON fk.DimMandantId = dm.Id
LEFT JOIN DimZeit AS dz
ON fk.DimZeitId = dz.Id
我真的尝试了很多,以了解如何显示父节点的总和,但我的CTE知识有限。希望有人能在这方面帮助我。显然,您的查询仅利用CTE根据DimAufbau表中的自引用结构构建逻辑树 如果不将数据添加到查询中,就没有最佳方法(从帐户)获取叶值聚合 但是,您提到在最终输出中没有科目表关系。 因此,您的输出如下所示:
;WITH aufbautree(id, relation, Bezeichnung, AufbauLevel) AS (
...
)
SELECT
at.*,
...,
sum(a.YourValueField) as ValueSum
FROM
aufbautree at
JOIN ...
LEFT JOIN Accounts a
ON {your condition}
GROUP BY at.Id
如果您需要一个示例,.您不能在SSRS中配置它吗?至少这是我的第一个想法。也许这有帮助?