我正在使用 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 值?