简体   繁体   English

在子查询中返回Max记录,并将其带入我的主查询中

[英]Return Max record in subquery and bring it into my main query

I have need to display the MAX rate for each Schedule and Pay Grade from my sub query and add it to my main query. 我需要显示子查询中每个进度表和薪资等级的最大费率,并将其添加到主查询中。 The select statement for my subquery is as follows: 我的子查询的select语句如下:

LEFT OUTER JOIN
 (SELECT FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE,  MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate
 FROM   FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2
 WHERE  FV_PRSAGDTL_VW2.R_STATUS in (5,2)
 GROUP By FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE) MAXRate
 ON MAXRate.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE
 AND MAXRate.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE

The query executes separately as well as when I add this to my main query, But when I try to pull the max rate into my main query, I am using MAXRate.PAY_RATE as "MAX Rate". 该查询以及将其添加到主查询中时都单独执行,但是当我尝试将最大费率放入主查询中时,我使用MAXRate.PAY_RATE作为“最大费率”。 I get error message "Invalid column name 'PAY_RATE'." 我收到错误消息“无效的列名'PAY_RATE'。”

Thought? 思想? Thanks. 谢谢。

Did you notice you have aliased it saying MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate and then trying with a different column name PAY_RATE and thus the error. 您是否注意到您已经别名它,说MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate ,然后尝试使用不同的列名PAY_RATE ,从而导致错误。 Change your subquery part to be like below. 更改您的子查询部分,如下所示。 Also to avoid confusion, don't alias column and inline view with same name. 另外,为避免混淆,请不要对列和内联视图使用相同的别名。 Now you can access the said column saying XXX.MaxRate 现在,您可以访问显示为XXX.MaxRate

LEFT OUTER JOIN
 (SELECT FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE,  MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate
 FROM   FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2
 WHERE  FV_PRSAGDTL_VW2.R_STATUS in (5,2)
 GROUP By FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE) XXX
 ON XXX.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE
 AND XXX.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE

Use with Ties and row_number function to return a dirived table of just the max Rates 与Ties和row_number函数一起使用以返回仅最大速率的派生表

     (SELECT top 1 with ties FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE, FV_PRSAGDTL_VW2.PAY_RATE
       FROM   FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2
       WHERE  FV_PRSAGDTL_VW2.R_STATUS in (5,2)
       ORDER BY ROW_NUMBER() over (partition by FV_PRSAGDTL_VW2.SCHEDULE,FV_PRSAGDTL_VW2.PAY_GRADE order by  FV_PRSAGDTL_VW2.PAY_RATE desc)) as MaxRate
  ON MAXRate.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE
  AND MAXRate.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE

The Join does not have a column Pay_Rate. 联接没有列Pay_Rate。 It has MaxRate. 它具有MaxRate。 – WEI_DBA 21 mins ago – 21分钟前WEI_DBA

This was the correct answer. 这是正确的答案。 Thanks for that catch! 谢谢你的收获!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM