tb1
Name Date Level
张三 8/15/2011 经理
李四 8/16/2011 经理
李四 8/17/2011 职员
王五 8/16/2011 经理
如何查询出每个姓名时间最大的那条记录,实际情况中tb1还有很多字段,用group by的结果导致其他字段也分组了
如何查询出以下结果?
Name Date Level
张三 8/15/2011 经理
李四 8/17/2011 职员
王五 8/16/2011 经理
Name Date Level
张三 8/15/2011 经理
李四 8/16/2011 经理
李四 8/17/2011 职员
王五 8/16/2011 经理
如何查询出每个姓名时间最大的那条记录,实际情况中tb1还有很多字段,用group by的结果导致其他字段也分组了
如何查询出以下结果?
Name Date Level
张三 8/15/2011 经理
李四 8/17/2011 职员
王五 8/16/2011 经理
select *
from tb t
where not exists (select 1 from tb where name = t.name and date > t.date)
where not exists(select 1 from tb where name = a.name and date<a.date)
select name,date,level from tb a
where not exists(select 1 from tb where name = a.name and date>a.date)
select name,date,level from tb a
where exists(select 1 from tb where name = a.name and date<a.date)
CREATE TABLE TB1(
NAME VARCHAR(20),
U_DATE DATE,
POSITION VARCHAR(20))
----------
INSERT INTO TB1(NAME,U_DATE,POSITION)
SELECT '张三','8/15/2011','经理'
UNION ALL
SELECT '李四','8/16/2011','经理'
UNION ALL
SELECT '李四','8/17/2011','经理'
UNION ALL
SELECT '王五','8/16/2011','经理'
-------
SELECT *
FROM TB1
-----查询--
SELECT NAME,MAX(U_DATE) U_DATE,POSITION
FROM TB1
GROUP BY NAME,POSITION
----
DROP TABLE TB1
;WITH
CTE AS(
SELECT NAME,Date,Level,
(ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY Date DESC )) NUMBER
FROM TB1
)
SELECT NAME,Date,Level
FROM CTE WHERE NUMBER=1也行