gpt4 book ai didi

sql - 查找 sql 查询以获取每个分组的最新关联日期

转载 作者:行者123 更新时间:2023-12-04 21:17:02 26 4
gpt4 key购买 nike

我有一个工资单数据的 sql 表,其中包含工资率和与这些工资率相关的生效日期,以及在不同日期的工作时间。它看起来有点像这样:

EMPID  DateWorked  Hours  WageRate  EffectiveDate

1 1/1/2010 10 7.00 6/1/2009
1 1/1/2010 10 7.25 6/10/2009
1 1/1/2010 10 8.00 2/1/2010
1 1/10/2010 ...
2 1/1/2010 ...

...

等等。基本上,数据的组合方式是,对于每一天的工作,所有员工的工资历史都结合在一起,我想获取与不晚于工作日期的最新生效日期相关的工资率。所以在上面的例子中,我想要的是在 6/10/2009 生效的 7.25 汇率。

我可以为此组合什么样的查询?我可以使用 MAX(EffectiveDate) 以及基于工作日期之前的标准,但这只会给我最新的日期本身,我想要相关的工资。为此,我正在使用 Sql Server。

或者,我有用于创建此数据的原始表。其中一个包含工作日期、小时数以及 EMPID,另一个包含工资率和生效日期列表。有没有一种方法可以加入这些而不是为每个工作日正确应用正确的工资率?

我想我想按 EMPID 分组,然后按 DateWorked 分组,然后从那里做一些事情。我想得到一个结果,它给我的工资率实际上是每个工作日期的最新有效工资率

最佳答案

select p.*
from (
select EMPID, DateWorked, Max(EffectiveDate) as MaxEffectiveDate
from Payroll
where EffectiveDate <= DateWorked
group by EMPID, DateWorked
) pm
inner join Payroll p on pm.EMPID = p.EMPID and pm.DateWorked = p.DateWorked and pm.MaxEffectiveDate = p.EffectiveDate

输出:

EMPID       DateWorked              Hours       WageRate                                EffectiveDate
----------- ----------------------- ----------- --------------------------------------- -----------------------
1 2010-01-01 00:00:00.000 10 7.25 2009-06-10 00:00:00.000

关于sql - 查找 sql 查询以获取每个分组的最新关联日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com