表达式总计未在SSRS 2008中显示正确的数据

时间:2011-07-15 18:54:04

标签: reporting-services ssrs-2008

长期读者。这个网站上有大量的信息。

希望这不是一个愚蠢的问题,但我一直在努力研究如何在报告中获得正确的总数。

我遇到了简单的总计问题。我有一个报告,它取两个数字的差异并显示结果,结果是负面和正面。在报告的底部,我想要差异的总和。由于某种原因,总数甚至都不接近。

这是我的数据:

Correct Data

Specialist  Total Sales     Budget          Difference
DICK        "$35,174.00"    "$63,530.00"    "($28,356.00)"
NATHAN      "$16,193.00"    "$40,000.00"    "($23,807.00)"
PAUL        "$52,096.00"    "$55,000.00"     "($2,904.00)"
STEVE       "$31,185.44"    "$66,700.00"    "($35,514.56)"

**Totals:  "$134,648.44"   "$225,230.00"    "($90,581.56)"**

Incorrect Data that is in my report

Specialist   Total Sales     Budget          Difference
DICK         "$35,174.00"    "$63,530.00"    "($28,356.00)"
NATHAN       "$16,193.00"    "$40,000.00"    "($23,807.00)"
PAUL         "$52,096.00"    "$55,000.00"     "($2,904.00)"
STEVE        "$31,185.44"    "$66,700.00"    "($35,514.56)"

**TOTALS:   "$134,648.44"   "$225,230.00"     "$71,118.44"**

如您所见,数据显示总差异为71,118.44美元($ 90,581.56)。

这是我的表达式,以获得差异的结果:

=Sum(Fields!TotalSales.Value)-Fields!Budget.Value

我右键单击文本框并选择“添加总计”以获得差值字段的总计。我也试过这个建议:

=Sum(Fields!TotalSales.Value)-Sum(Fields!Budget.Value)

而且:

=ReportItems!textbox14.Value - ReportItems!textbox15.Value

另一件值得一提的是专家的分组。总销售额字段是该特定月份的销售总额。 “预算”字段是该组外的单个字段。

这似乎没什么好处的。也许有人可以给我一些指导。

提前致谢。

编辑:

感谢您的帮助,但不幸的是问题比这更复杂:)我应该更清楚了。我从3-4个数据库中提取数据,并且没有要连接的公共字段。我正在使用行号来减少重复的小计并将它们设置为0.我在预算编号上使用了一个rownumber,但我回来的数据是假的。这是我的数据:

Name    Team    SubTotal Budget 
SCOTT   Vikings 202      25000.00 
SCOTT   Vikings 1890     25000.00 
SCOTT   Vikings 5167     25000.00 
SCOTT   Vikings 20256    25000.00 
SCOTT   Vikings 0        25000.00 
SCOTT   Vikings 0        25000.00

这是我想要的数据:

Name    Team    SubTotal Budget 
SCOTT   Vikings 202      25000.00 
SCOTT   Vikings 1890         0.00 
SCOTT   Vikings 5167         0.00 
SCOTT   Vikings 20256        0.00 
SCOTT   Vikings 0            0.00 
SCOTT   Vikings 0            0.00

如果预算编号不止一次重复,我希望它为0.我认为这就是我的总数在SSRS中无法正确显示的原因。我通过获取销售员小计的GrandTotal并从放入组页脚的预算字段中减去它来计算差异字段(因为我是新的我无法发布图像,抱歉。这是超链接)

http://i55.tinypic.com/124jw2u.png

这是我的SQL语句:

WITH InvoicedAndPaid
AS

(
SELECT KEY1
  ,ltrim(rtrim(CustomText01)) as CustomText01
  ,ROW_NUMBER() OVER(PARTITION BY DocNo ORDER BY DocNo) AS RowNumber      
  ,SubTotal
  ,OrderDate     
      ,INVOICEDATE
FROM DocumentHeadersItems AS AA
JOIN SorArCombined AS BB
ON AA.DocNo = ('AA' + BB.CustomerPoNumber)
JOIN CONTACT1 AS CC
ON AA.SoldToCMAccountNo = CC.ACCOUNTNO
WHERE CreatedBy != 'NOAHDM'
  AND KEY1 IN (@org)
  AND SubTotal != 0
  AND LEN(INVOICE) > 0
  AND
     (

        (
            CUSTOMER = 'QAA'
            AND (INVOICEDATE IS NOT NULL)
            AND (DATEPART(MM,INVOICEDATE) = DATEPART(MM,@start))
            AND (DATEPART(YYYY,INVOICEDATE) = DATEPART(YYYY,@end))
         )
      OR
         (
            CUSTOMER != 'QAA'
            AND (YearInvBalZero > 0)
            AND (YearInvBalZero = DATEPART(YYYY,@start))
            AND (MonthInvBalZero = DATEPART(MM,@start))
            AND (YearInvBalZero = DATEPART(YYYY,@end))
            AND (MonthInvBalZero = DATEPART(MM,@end))               
          )
      )
)

SELECT bb.team_id
  ,bb.specialist_id
  ,dd.Budget
  ,cc.team_name
  ,KEY1
  ,CustomText01
  ,CASE WHEN RowNumber = 1 THEN SubTotal ELSE 0 END as SubTotal
FROM InvoicedAndPaid as aa
join SalesReporting.dbo.team_members as bb
on rtrim(aa.CustomText01) = rtrim(bb.specialist_name)
join SalesReporting.dbo.team_master as cc
on bb.team_id = cc.team_id
join SalesReporting.dbo.sales_goals as dd
on bb.specialist_id = dd.specialist_id
WHERE dd.time_span LIKE 'M%'
  AND dd.month = DATENAME(MONTH,@end)
  AND dd.Org = aa.KEY1
  AND cc.team_name in (@team)
  AND dd.period_no = DATEPART(MM,@end)
ORDER BY team_name, CustomText01

这有点帮助吗?我试图避免执行存储过程,因为我在SSRS和SQL Server上相当新。

2 个答案:

答案 0 :(得分:2)

一种选择是计算SSRS数据集中使用的SQL Server查询中的总销售额。以下示例显示了一个示例。该样本是基于我设想表格的假设而创建的。该报告是在SSRS 2008 R2中创建的,使用的数据库是SQL Server 2008 R2

  1. 假设源表格如屏幕截图# 1 所示。该表未标准化,但此处仅显示示例。

  2. 报告数据库的查询将如屏幕截图# 2 所示。查询也在 SSRS数据集查询部分下提供。

  3. 报告的设计方式如屏幕截图# 3 所示。 a部分=Fields!TotalSales.Value - Fields!Budget.Value中的表达式和b部分中的表达式将为=Sum(Fields!TotalSales.Value, "SalesData") - Sum(Fields!Budget.Value, "SalesData")

  4. 屏幕截图# 4 显示报告执行情况。

  5. 希望有所帮助。

    SSRS DataSet查询:

    SELECT      Specialist
            ,   SUM(Sales) AS TotalSales
            ,   SUM(DISTINCT(Budget)) AS Budget 
    FROM        dbo.SalesData 
    GROUP BY    Specialist
    

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    3

答案 1 :(得分:1)

在这种罕见的情况下,我不得不放入页脚并将总和公式引用到实际的文本框中。非常奇怪,这是有效的,但正则表达式没有。

感谢您对此的帮助!