0

我正在使用 Report Builder 3 编写报告,我需要一些关于 sql 查询的帮助来获取唯一值。

使用以下示例数据:

在此处输入图像描述

我需要能够为每个feeRef 返回的feeBudRec 获得一个值。对于每个单独的feeRef,每个feeBudRec 的值始终相同(例如,对于feeRef LR01 的每个数据行,feeBudRec 的值为1177)。

我需要为每个feeRef 获取单个feeBudRec 值的原因是我需要能够合计feePin 中每个feeRef 的feeBudRec 值(例如,对于feePin LEE,我需要合计LR01 和PS01 的feeBudRec 值,应该是 1177 + 1957 得到总共 3134;但是如果我没有feeBudRec 的唯一值,它将添加每一行的值,这将为 8 个 LEE 行带来总共 11756)。

我编写 SQL 查询的经验非常有限,但是通过搜索互联网,看起来我需要在我的 SQL 查询中放入一个子查询,以便为每个 feeRef 获取一个唯一的 feeBudRec 数字,并且一个子查询获得每个feeRef 的最低feeBudRec 值应该对我有用。

根据我找到的示例,我认为以下子查询应该可以工作:

SELECT a.feeRef, a.feeBudRec
  FROM (
    SELECT uvw_EarnerInfo.feeRef, Min(uvw_EarnerInfo.feeBudRec) as AvailableTime
    FROM uvw_EarnerInfo
    GROUP BY
    uvw_EarnerInfo.feeRef
) as x INNER JOIN uvw_EarnerInfo as a ON a.feeRef = x.feeRef AND a.feeBudRec = x.AvailableTime;

问题是我不知道如何将该子查询插入到我用来生成报告的查询中(如下所示):

SELECT
  uvw_EarnerInfo.feeRef
  ,uvw_EarnerInfo.PersonName
  ,uvw_EarnerInfo.PersonSurname
  ,uvw_EarnerInfo.feePin
  ,uvw_RB_TimeLedger.TimeDate
  ,uvw_RB_TimeLedger.matRef
  ,uvw_RB_TimeLedger.TimeTypeCode
  ,uvw_RB_TimeLedger.TimeCharge
  ,uvw_RB_TimeLedger.TimeElapsed
  ,uvw_WoffTimeByTime.WoffMins
  ,uvw_WoffTimeByTime.WoffCharge
  ,uvw_EarnerInfo.feeBudRec
  ,uvw_EarnerInfo.personOccupation
FROM
  uvw_RB_TimeLedger
  LEFT OUTER JOIN uvw_WoffTimeByTime
    ON uvw_RB_TimeLedger.TimeId = uvw_WoffTimeByTime.TimeId
  RIGHT OUTER JOIN uvw_EarnerInfo
    ON uvw_EarnerInfo.feeRef = uvw_RB_TimeLedger.feeRef
WHERE
  uvw_RB_TimeLedger.TimeDate >= @TimeDate
  AND uvw_RB_TimeLedger.TimeDate <= @TimeDate2

如果该子查询将获得正确的结果,任何人都可以帮我将它插入到我的报告查询中。否则,谁能让我知道我需要做什么才能为每个feeRef 获得唯一的feeBudRec 值?

4

2 回答 2

0

取决于确切的架构,但假设 uvw_EarnerInfo 列出了 Pin、Ref 和 Rec 而没有重复,请尝试在查询末尾添加一个额外的列(在 personOccupation 之后),例如:

feeBudRecSum = (Select SUM(FeeBudRec) From uvw_EarnerInfo x 
            where x.feePin = uvw_EarnerInfo.feePin
            Group By x.FeePin)

请注意,您不会在报告中对这些值求和。此列应包含您要查找的总数。

于 2012-07-19T19:21:48.713 回答
-1

Report Builder 的关键是从偏移量中获取正确的查询,然后让向导为您构建报告。它消除了手动构建报告的所有艰苦工作。我已经有一段时间没有使用报表生成器了,但是在显示查询图形表示的报表的查询生成器中,您应该能够将列拖放到查询集中和从中删除。将一列向上拖出框(显示您的列)会导致您的报告在此列上中断。如果您以这种方式重组,您可能必须再次运行报告生成器来重新生成报告并对其进行重组。一旦您对结构感到满意,您就可以开始添加摘要列。

于 2012-07-19T13:52:47.233 回答