Sql server SQL Server:聚合函数困境
我有一个表,其中有列Sql server SQL Server:聚合函数困境,sql-server,max,Sql Server,Max,我有一个表,其中有列id,first,last,date\u added 我想得到所有名字的列表,以及每个名字的最近雇佣日期,但我还想得到该员工的姓氏。无法查看以编写执行此操作的查询!我想我需要加入同一张桌子 我迄今为止最好的尝试是: select users.first, users.last, u2.date_added from (select first, max(date_added) as date_added from users
id
,first
,last
,date\u 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
除非我误解了这个问题,你肯定只需要将数据分组?例如:
select first, last, max(date_added) as date_added
from users
group by first, last
如果您只是直呼其名(这似乎很奇怪),那么我建议您使用
row\u number()
:
您的最佳尝试已接近尾声,但您需要回到您的最大值(添加日期),如下所示
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
我想你误解了。这给了我一个清单,上面列出的比我要找的还多。因此,如果我的表中有两个“Tom”条目(我们将说Tom Delonge-添加了1/1/16,Tom Hanks添加了1/2/16),那么结果将显示两个Tom。我只想找汤姆·汉克斯,因为他最近才被加上去。他干得不错!不得不做一点小小的修改,但非常感谢您为我指明了这个方向。
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