Sql 模式计算是从所有数据中提取,而不是从子集中提取

Sql 模式计算是从所有数据中提取,而不是从子集中提取,sql,sql-server,tsql,reporting-services,Sql,Sql Server,Tsql,Reporting Services,我正在SSRS report Builder 2016中创建报告 我有一组数据,其中包含一组机构以及每个机构每月的账单金额。对于TotalBilled,每个代理都可以有多个值。我想找到每个机构的模式总账单价值 我在查询中计算模式值,但它从所有代理中的所有TotalBilled中提取,而不仅仅是与我在参数中设置的代理相关的TotalBilled 这是我的数据集: Select a.AgencyID a.startdate, a.enddate, [TotalBilled], (SEL

我正在SSRS report Builder 2016中创建报告

我有一组数据,其中包含一组机构以及每个机构每月的账单金额。对于TotalBilled,每个代理都可以有多个值。我想找到每个机构的模式总账单价值

我在查询中计算模式值,但它从所有代理中的所有TotalBilled中提取,而不仅仅是与我在参数中设置的代理相关的TotalBilled

这是我的数据集:

Select 
 a.AgencyID
 a.startdate,
 a.enddate,
 [TotalBilled],

 (SELECT TOP 1 WITH TIES TotalBilled
    From    invoiceLine I
    WHERE   TotalBilled <> 0
    GROUP BY TotalBilled
    ORDER BY Count(invl.TotalBilled) DESC ) AS ModeTotalBilled

from Agency a
left join invoiceLine invl
     on a.InvoiceID = invl.InvoiceID
where (a.agencyid in (@agency))
and (a.startdate >= @startdate and a.enddate <= @enddate)
我试图在模式查询中加入代理,但运行时出错

 (SELECT TOP 1 WITH TIES TotalBilled
    From    invoiceLine I
    WHERE   TotalBilled <> 0
    AND     a.InvoiceID = I.InvoiceID
    GROUP BY TotalBilled
    ORDER BY Count(invl.TotalBilled) DESC ) AS ModeTotalBilled
错误:

无法读取dataset DataSet1的下一个数据行。RSerroradingnextdatarow

报表处理过程中发生错误。rsProcessingAborted


改变我的模式值计算的正确方法是什么,以使其受我的代理参数的影响,而不仅仅是从整个数据库中提取?

这就是您想要的吗

SELECT a.AgencyID, a.startdate, a.enddate,
       (SELECT TOP (1) i.TotalBilled
        FROM invoiceLine i
        WHERE i.TotalBilled <> 0 AND a.InvoiceID = i.InvoiceID
        GROUP BY i.TotalBilled
        ORDER BY COUNT(i.TotalBilled) DESC
       ) as ModeTotalBilled
FROM Agency a
WHERE a.agencyid = @agency AND
      a.startdate >= @startdate AND
      a.enddate <= @enddate;
我不明白你为什么要在外部查询中加入invoice。您应该限定所有列名,尤其是在使用相关子查询时


在子查询中,带TIES的TOP 1没有任何意义。如果有多个值符合模式,那么只需返回一个错误。

我的查询实际上也从其他表中提取了更多的值。以上是删除所有其他信息后我的查询结果。在我最初的查询中,我做了几次从代理到发票的连接。我的问题是“With Ties”导致返回多个值。在我弄清楚如何处理模式的多个值之前,我将删除它。谢谢你的帮助!