我遇到的问题是SQL Server Reporting Services不喜欢Sum(First())表示法。它仅允许Sum()或First()。

上下文
我正在创建对帐报告。 IE。我们开始了什么 socks ,期初订购了什么,期末库存了多少。

数据集返回类似

类型,产品,客户,开始库存(SAS),订购数量,结束库存(SAE)
导出1,1,100,5,90
导出,1,2,100,5,90
国内2,2,200,10,150
国内2,2,200,20,150
国内2,3,200,30,150

我按类型分组,然后按产品分组,并列出购买该产品的客户。
我想显示SAS,订购数量和SAE的总数,但是如果我对SAS或SAE求和,则产品1和2的值分别为100和200时,分别得到200和600的值。

我以为我可以做一个Sum(First()),但是SSRS提示说我不能在一个聚合中拥有一个聚合。

理想情况下,SSRS需要一个Sum(Distinct())

解决方案到目前为止
1.不要显示开始时的库存和结束时的库存作为总计的一部分。
2.直接在报告中编写一些代码以进行计算。尝试了这个-没按我预期的那样工作。
3.编写一个程序集进行计算。 (还没尝试过这个)

编辑-问题澄清
问题源于以下事实:实际上这是两个报告合并为一个报告(如我所见)。生产报告和销售报告。
该报告试图解决这些标准

  • 我们出售给的市场(导出,国内)
  • 我们有多少库存
  • 产生了多少,
  • 已售出多少,
  • 我们卖给谁的
  • 我们还剩下多少钱。

  • 复杂的因素是我们卖给谁的人。除此之外,这将是相对容易的。但是包括它意味着其他顶线数字(开始时的库存和结束时的库存)与销售的产品无关,除了特定的产品。

    最佳答案

    我有一个类似的问题,最终在查询中使用ROW_NUMBER为行值提供一个整数,然后使用SUM(IIF(myRowNumber = 1,myValue,0))。

    开始工作并提供更多数据时,我将对其进行编辑,但认为这可能足以使您入门。我也对阿道夫的解决方案感到好奇。

    关于sql-server - 我如何绕过Sum(First(...))不允许的限制是SSRS2005,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/771040/

    10-15 15:59