我正在使用Report Builder 3编写报告,我需要一些sql查询方面的帮助来获取唯一值。
使用以下示例数据:

我需要能够为每个feeRef返回一个feeBudRec值。对于每个单独的feeBudRec,每个feeRef的值始终相同(例如,对于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值?
发布于 2012-07-20 03:21:49
取决于确切的架构,但假设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-19 21:52:47
报表生成器的关键是根据偏移量获得正确的查询,然后让向导为您构造报表。它省去了手动构建报告的所有繁重工作。我已经有一段时间没有使用Report Builder了,但是在显示查询图形表示的报表的查询构建器中,您应该能够将列拖入和拖出查询集。向上拖动列并将其拖出框(显示您的列)将导致报表在此列上中断。如果以这种方式重构,则可能需要再次运行报表生成器来重新生成报表并对其进行重构。一旦您对结构感到满意,您就可以开始添加摘要列。
https://stackoverflow.com/questions/11562171
复制相似问题