代码之家  ›  专栏  ›  技术社区  ›  Nathan Fisher

如何绕过不允许限制的总和(第一个(…)是SSRS2005

  •  5
  • Nathan Fisher  · 技术社区  · 16 年前

    上下文

    数据集返回类似于
    Type,Product,Customer,Stock at Start(SAS), Ordered Qty, Stock At End (SAE)
    Export,1,1,100,5,90
    Export,1,2,100,5,90
    Domestic,2,1,200,10,150
    Domestic,2,2,200,20,150
    Domestic,2,3,200,30,150
    

    我按类型分组,然后列出产品并列出购买该产品的客户。

    我以为我可以做一个Sum(First()),但是SSRS抱怨我不能在一个聚合中有一个聚合。

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


    一。不要将开始时的库存和结束时的库存作为总数的一部分显示。
    2。直接在报告中写一些代码来计算。尝试了这个——没有按我预期的那样工作。 三。编写程序集以进行计算。(没有试过这个)


    这个问题源于这样一个事实:这实际上是两个报表合并为一个报表(如我所见)。生产报告和销售报告。
    报告试图解决这些标准

    • 我们卖给的市场(出口,国内)
    • 我们有多少存货,
    • 生产了多少,
    • 卖了多少钱,
    • 我们卖给谁了,
    • 我们还剩多少钱。

    更复杂的因素是我们卖给了谁。如果没有这些,那就相对容易了。但包括它意味着除了特定的产品之外,其他的高端数据(开始时的库存和结束时的库存)和所销售的产品无关。

    4 回复  |  直到 15 年前
        1
  •  5
  •   Paul G    16 年前

    我也遇到过类似的问题,最后在查询中使用ROW_NUMBER为行值提供整数,然后使用SUM(IIF(myrownnumber=1,my value,0))。

    当我开始工作并提供更多数据时,我会编辑这个,但我想这可能足以让您开始。我也很好奇阿道夫的解决方案。

        2
  •  1
  •   adolf garlic    16 年前

    你考虑过在SQL中使用窗口/排名函数吗?

    这允许您在不丢失详细信息的情况下聚合数据

    e、 想象一下,对于一个范围的值,您希望返回最小值和最大值,但您也希望返回初始数据(没有数据摘要)。

    Group Value Min Max
    A      3    2    9
    A      7    2    9
    A      9    2    9
    A      2    2    9
    B      5    5    7
    B      7    5    7
    C etc..
    

    语法看起来很奇怪,但它只是

    AggregateFunctionYouWant  OVER (WhatYouWantItGroupedBy, WhatYouWantItOrderedBy) as AggVal
    

    Windowing

    Ranking

        3
  •  1
  •   DForck42    16 年前

    你的数据有点奇怪,但我想我知道你要去哪里。

    类型、产品、SAS、SAE、客户、订购数量

    我要做的是创建一个带有表控件的报表。我将类型、产品和客户设置为三个独立的组。我会将sas和sae数据放在与产品相同的组上,并将数量放在客户组上。这应该和我相信你想要的相似。你的sas和sae应该在第一个()

        4
  •  0
  •   tpdi    16 年前

    编写子查询。

    重新编写查询以正确执行此操作。

    我怀疑您的问题是,您编写的查询得到了错误的结果,或者您的表设计得不好。如果不知道你想做什么,我就不能告诉你如何修复它,但它有一股难闻的“气味”。