首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何运行sql n倍递增变量和加入结果

如何运行sql n倍递增变量和加入结果
EN

Stack Overflow用户
提问于 2013-04-08 20:27:23
回答 1查看 91关注 0票数 0

我有一个带有CreatedDate的transact表(历史表),此事务与employee表相关。(内部加入transact_id)

尽管如此,问题还是出现了:我需要查询这些表并按月获取状态,因为在这一年中,CreatedDate可以更改。例如,7月的员工更新将创建一个新的行,但这不应影响三月份的总数。

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

  • 1月-123美元
  • 2月-234美元
  • 3月-123美元
  • ..。

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

代码语言:javascript
运行
复制
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次。:)

EN

回答 1

Stack Overflow用户

发布于 2013-04-08 21:22:16

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

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

https://stackoverflow.com/questions/15888342

复制
相关文章

相似问题

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