首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -如何在查询中插入子查询以检索唯一值

SQL -如何在查询中插入子查询以检索唯一值
EN

Stack Overflow用户
提问于 2012-07-19 21:41:08
回答 2查看 3.3K关注 0票数 0

我正在使用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值的子查询应该对我有效。

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

代码语言:javascript
复制
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;

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

代码语言:javascript
复制
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值?

EN

回答 2

Stack Overflow用户

发布于 2012-07-20 03:21:49

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

代码语言:javascript
复制
feeBudRecSum = (Select SUM(FeeBudRec) From uvw_EarnerInfo x 
            where x.feePin = uvw_EarnerInfo.feePin
            Group By x.FeePin)

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

票数 0
EN

Stack Overflow用户

发布于 2012-07-19 21:52:47

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11562171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档