加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

具有前任的SQL列表帐户管理器

发布时间:2020-12-12 06:34:36 所属栏目:MsSql教程 来源:网络整理
导读:我有以下我似乎无法弄清楚.我正在尝试获取帐户中的帐户管理员列表,他们的开始/结束日期以及在一行中接管帐户的新帐户管理员. 例: DECLARE @accountManagerListing TABLE ( accountNumber INT,accountManager VARCHAR(8),accountManagerStartDate DATE,accoun
我有以下我似乎无法弄清楚.我正在尝试获取帐户中的帐户管理员列表,他们的开始/结束日期以及在一行中接管帐户的新帐户管理员.

例:

DECLARE @accountManagerListing TABLE 
                               (
                                    accountNumber INT,accountManager VARCHAR(8),accountManagerStartDate DATE,accountManagerEndDate DATE
                               )

INSERT INTO @accountManagerListing (accountNumber,accountManager,accountManagerStartDate,accountManagerEndDate)
VALUES  (1,'asmith','01/01/2001','01/31/2001'),(1,'bsmith','02/01/2001','03/01/2002'),'csmith','03/02/2002','03/10/2002'),'dsmith','03/11/2002','06/01/2017'),'esmith','06/02/2017','08/17/2018'),(2,'fsmith','02/11/2018','06/01/2018'),'gsmith','06/02/2018',null)

预期成绩:

Account Number  Old Account Manager  New Account Manager  Start Date  End Date

1                                    asmith               01/01/2001   01/31/2001
1               asmith               bsmith               02/01/2001   03/01/2002
1               bsmith               csmith               03/02/2002   03/10/2002
1               csmith               dsmith               03/11/2002   06/01/2017
1               dsmith               esmith               06/02/2017   08/17/2018
2                                    fsmith               02/11/2018   06/01/2018
2               fsmith               gsmith               06/02/2018   NULL

解决方法

使用lag():
select a.*,lag(accountManager) over (partition by accountnumber order by accountManagerStartDate) as OldAccountManager
from @accountManagerListing a;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读