Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSRS中亲子关系的总和_Sql_Sql Server_Reporting Services - Fatal编程技术网

Sql SSRS中亲子关系的总和

Sql SSRS中亲子关系的总和,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,下表称为DimAufbau 如您所见,此表使用“relation”字段保存父对象的id来保存父子关系 此表中的每个节点都可以包含更多节点或帐户 正如您所看到的,Betriebliche有一些关联的帐户,但Erlöse和GuV不能有帐户(实际上,这是我在使用SSA时发现的一个限制,但现在它不是问题) Dimaufafu与账户之间的关联如下: 现在,问题是:我们有一个名为ReportKore的SSRS报告,它必须显示Aufbau表的树结构,显示一些字段的总和 填充该报告的数据集使用以下查询,

下表称为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表中的自引用结构构建逻辑树

如果不将数据添加到查询中,就没有最佳方法(从帐户)获取叶值聚合

但是,您提到在最终输出中没有科目表关系。 因此,您的输出如下所示:

  • id-树节点id
  • da.关系-树自引用(引用父级)
  • da.bezeichung-树节点名称
  • tr.AufbauLevel树节点级
  • fk.BetragIst-未知
  • fk.BetragPlan未知
  • dkbez.bezeichung树节点konto描述(叶描述?)
  • 我在您的报告中没有看到任何与“总计”相关的内容,因此必须有另一个数据源或其他东西来聚合/输出该列中的数据

    最后,如果希望在SQL查询中从Accounts表获取数据,则必须在查询中加入该表。它不一定要在CTE的身体,但我不确定它将是最佳的

    以下是您可以在适当情况下使用的方案:

    ;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中配置它吗?至少这是我的第一个想法。也许这有帮助?