我的表格中包含id
,first
,last
,date_added
列。
我想获得所有名字的列表,以及每个名字的最近雇用日期,但我也希望获得该雇员的姓氏。看不到写这样做的查询!我想我需要加入同一张桌子?
到目前为止我的最佳尝试:
select
users.first, users.last, u2.date_added
from
(select
first, max(date_added) as date_added
from users
group by first) u2
left join
users on u2.first = users.first
group by
users.first, users.last, u2.date_added
order by
users.first
答案 0 :(得分:0)
如果你只是以名字(看起来很好奇),那么我会推荐row_number()
:
select u.first, u.last, u.date_added
from (select u.*, row_number() over (partition by first, date_added desc) as seqnum
from users u
) u
where seqnum = 1;
答案 1 :(得分:0)
您的最佳尝试已接近,但您需要加入到您的max(date_added),如下所示
DECLARE @users TABLE
(
id int IDENTITY(1,1)
, first varchar(100)
, last varchar(100)
, date_added datetime
)
INSERT INTO @users
(first
,last
,date_added
)
SELECT 'john', 'doe', GETDATE()
UNION SELECT 'john', 'deere', DATEADD(d, 1, GETDATE())
UNION SELECT 'jane', 'doe', GETDATE()
--actual data
SELECT * FROM @users
--desired output
SELECT
u.*
FROM @users u
INNER JOIN (
SELECT first, max(date_added) AS date_added_max
FROM @users
GROUP BY first
) max_u
ON u.first = max_u.first
AND u.date_added = max_u.date_added_max
ORDER BY u.first
答案 2 :(得分:-1)
除非我确实误解了这个问题,否则你只需要对数据进行分组?例如:
select first, last, max(date_added) as date_added
from users
group by first, last