SQL-如何在查询中插入子查询以检索唯一值
我正在使用ReportBuilder3编写报告,我需要一些sql查询的帮助来获取唯一值 使用以下示例数据: 我需要能够为每个feeRef返回一个feeBudRec值。每个feeBudRec的值对于每个feeRef始终相同,例如,feeRef LR01的每个数据行的feeBudRec为1177 我需要为每个feeRef获取单个feeBudRec值的原因是,我需要能够合计feePin中每个feeRef的feeBudRec值,例如对于feePin LEE,我需要合计LR01和PS01的feeBudRec值,应为1177+1957,以获得总计3134;但是如果feeBudRec没有唯一的值,它将为每一行添加值,这将为8行返回11756个值 我编写SQL查询的经验非常有限,但从搜索internet来看,我似乎需要在SQL查询中加入一个子查询,以便为每个feeRef获得一个唯一的feeBudRec数字,并且为每个feeRef获得最小feeBudRec值的子查询应该适合我 根据我找到的示例,我认为以下子查询应该可以工作:SQL-如何在查询中插入子查询以检索唯一值,sql,reporting-services,subquery,reportbuilder3.0,Sql,Reporting Services,Subquery,Reportbuilder3.0,我正在使用ReportBuilder3编写报告,我需要一些sql查询的帮助来获取唯一值 使用以下示例数据: 我需要能够为每个feeRef返回一个feeBudRec值。每个feeBudRec的值对于每个feeRef始终相同,例如,feeRef LR01的每个数据行的feeBudRec为1177 我需要为每个feeRef获取单个feeBudRec值的原因是,我需要能够合计feePin中每个feeRef的feeBudRec值,例如对于feePin LEE,我需要合计LR01和PS01的feeBudRe
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值吗?报表生成器的关键是从偏移量中获得正确的查询,然后让向导为您构建报表。它省去了手工构建报告的所有辛苦工作。 我已经有一段时间没有使用报表生成器了,但是在显示查询图形表示的报表的查询生成器中,您应该能够在查询集中拖放列。将列向上拖出显示列的框会导致报告在此列上中断。 如果以这种方式重新构造,则可能需要再次运行报表生成器来重新生成报表并重新构造它。
一旦您对结构满意,您就可以开始添加摘要列。取决于确切的架构,但假设uvw\u EarnerInfo列出了Pin、Ref和Rec,并且没有重复项,请尝试在查询结束时的personOccupation之后添加额外的列,例如:
feeBudRecSum = (Select SUM(FeeBudRec) From uvw_EarnerInfo x
where x.feePin = uvw_EarnerInfo.feePin
Group By x.FeePin)
请注意,您不会在报告中对这些值求和。此栏应包含您要查找的总数。谢谢您的回复。我应该提到,我以前使用过很多ReportBuilder,但我以前从来没有为报表提供过这样的唯一值。不幸的是,这不是正确格式化报告的问题。如果我将feeBudRec列作为一个组放在break的左侧,而不是报告细节的一部分,并尝试对feePin的feeBudRec值求和,我会得到与feeBudRec字段是细节的一部分时相同的错误结果。