0

我有一个带有 的事务表(历史)CreatedDate,这个事务与员工事务表有关。(transact_id 中的内连接)

话虽如此,问题来了:我需要查询这些表并按月获取状态,因为在一年中,CreatedDate可能会发生变化。例如,7 月份的员工更新将创建一个新行,但这不应影响 3 月份的总数。

该解决方案看起来像一个forech,但我如何才能在最后加入所有行?结果应该是这样的:

  • 一月 - 123 美元
  • 二月 - 234 美元
  • 三月 - 123 美元
  • ...

我得到每个员工的最后状态:

select AllTransact.id_employee, AllTransact.id_department from (

select id_employee, id_department, rank() over (partition by id_employee order by created_date desc) desc_rank
from Transact_Employee TransEmployee
inner join Transact     on TransEmployee.ID_Transact = Transact.ID_Transact 
                        and Transact.Status = 8 
                        and Transact.Created_Date < @currentMonth) AllTransact

where desc_rank = 1

*我不想复制并粘贴所有代码 12 次。:)

4

1 回答 1

0

您可以对许多列进行分区。rank() OVER (partition BY [id_employee],datepart(month,[Created_Date]) ORDER BY [Created_Date] DESC)会给你你现在拥有的东西,但每个月(它不关心那个月是哪一年,所以你也需要按年分区或添加对 created_date 的限制)。

于 2013-04-08T21:22:16.537 回答