【发布时间】:2014-03-12 15:02:27
【问题描述】:
我有一个“源”表,其中包含用户登录列表以及登录日期和时间。 “源”表如下所示...
CREATE TABLE [dbo].[tblSrc](
[userID] [varchar](50) NULL,
[date] [datetime] NULL)
出于说明目的,某些行可能包含...
userID date
------ ----
1 2013-01-01 00:00:00.000
2 2013-01-01 00:00:00.000
3 2013-01-01 00:00:00.000
2 2013-01-02 00:00:00.000
3 2013-01-03 00:00:00.000
3 2013-01-04 00:00:00.000
1 2013-01-02 00:00:00.000
3 2013-01-05 00:00:00.000
我有一个如下的“目的地”表...
CREATE TABLE [dbo].[tblDest](
[userID] [varchar](50) NOT NULL,
[date1] [datetime] NULL,
[date2] [datetime] NULL,
[date3] [datetime] NULL)
源表中的用户 ID 包含多个重复的用户 ID,而我已使用唯一用户 ID 填充目标表。
我需要做的是遍历源表并插入每个用户的最后三个登录日期?
因此,例如,目标表会使用 userID '3'
用户 '3' 在源表中有 4 个条目
userID date1 date2 date3
------ ----- ----- -----
3 2013-01-05 00:00:00.000 2013-01-04 00:00:00.000 2013-01-03 00:00:00.000
date1 是最近的登录日期,date2 是下一个,date3 是下一个。
我可以从每个用户 ID 的源表中获取最新日期,但我不知道如何获取三个最近的日期(假设有三个日期)并将它们插入到目标表中。
非常感谢任何帮助。
【问题讨论】:
标签: sql