34,874
社区成员
发帖
与我相关
我的任务
分享

select a.id,a.姓名,a.登记时间,a.登记内容,
(select top 1 b.登记时间
from [表名] b
where b.姓名=a.姓名 and b.id<a.id
order by b.id desc) '上一次的登记时间',
(select top 1 b.登记内容
from [表名] b
where b.姓名=a.姓名 and b.id<a.id
order by b.id desc) '上一次的登记内容'
from [表名] a
select a.*,b.* from
(select top 1 id,[姓名],[登记时间],[登记内容] from [表名] order by ID desc ) a,
(select top 1 [登记时间] as 该姓名上一次的登记时间,[登记内容] as 上一次的登记内容
from [表名] where ID<(select max(id) from [表名]) order by ID desc) b
:
SELECT MAX(CASE WHEN GROUP_ID=1 THEN ID ELSE NULL END)AS LAST_ID,
姓名,
MAX(CASE WHEN GROUP_ID=2 THEN 登记时间 ELSE NULL END)AS 上一次登记时间,
MAX(CASE WHEN GROUP_ID=1 THEN 登记时间 ELSE NULL END ) AS 本次登记时间,
MAX(CASE WHEN GROUP_ID=2 THEN 登记内容 ELSE NULL END)AS 上一次的登记内容
FROM (SELECT TBL_TMP.*,(SELECT COUNT(*)+1 FROM 表 WHERE 姓名=TBL_TMP.姓名 and 登记时间>TBL_TMP.登记时间) AS GROUP_ID FROM 表 AS TBL_TMP) a
WHERE a.GROUP_ID<=2 GROUP BY 姓名 ORDER BY LAST_ID
with t as
(select a.id,a.姓名,a.登记时间,a.登记内容,
row_number() over(partition by a.姓名 order by a.id) 'rn'
from [表名] a
)
select b.id,b.姓名,b.登记时间,b.登记内容,
c.登记时间 '上一次的登记时间',
c.登记内容 '上一次的登记内容'
from t b
left join t c on b.rn=c.rn+1