34,593
社区成员
发帖
与我相关
我的任务
分享
create table salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into salary values(2,'ela','2007-08-20',100)
insert into salary values(1,'sam','2007-06-20',50)
insert into salary values(2,'ela','2007-05-20',70)
insert into salary values(3,'richer','2007-08-21',300)
insert into salary values(4,'bacom','2007-06-20',400)
insert into salary values(2,'sam','2007-07-20',200)
select empid,empname,changtime,salary from
(select empid,empname,changtime,salary,
max(changtime) over (partition by empname) as newtime from salary) a
where a.changtime=a.newtime
select empid,empname,changtime,salary from (select empid,empname,changtime,salary,max(changtime) over (partition by empname) as newtime from salary) a where a.changtime=a.newtime
create table salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into salary values(2,'ela','2007-08-20',100)
insert into salary values(1,'sam','2007-06-20',50)
insert into salary values(2,'ela','2007-05-20',70)
insert into salary values(3,'richer','2007-08-21',300)
insert into salary values(4,'bacom','2007-06-20',400)
insert into salary values(2,'sam','2007-07-20',200)
select * from salary where changtime in
(
select max(changtime) from salary
group by empname
)
drop table salary
create table salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into salary values(2,'ela','2007-08-20',100)
insert into salary values(1,'sam','2007-06-20',50)
insert into salary values(2,'ela','2007-05-20',70)
insert into salary values(3,'richer','2007-08-21',300)
insert into salary values(4,'bacom','2007-06-20',400)
insert into salary values(2,'sam','2007-07-20',200)
select * from salary where changtime in
(
select max(changtime) from salary
group by empname
)
drop table salary
select * from salary aa where not exists(select * from salary where changtime>aa.changtime and
empid = aa.empid )
select s.empid,empname,salary
from
salary s inner join
(
select empid,max(changtime) as changtime
from salary
group by empid
) a
on s.changtime=a.changtime and s.empid=a.empid
select a.empname,a.salary from salary a
join (select empname,changtime=max(changtime) from salary group by empname) b
on a.empname=b.empname and a.changtime=b.changtime
[Quote=引用 6 楼 hsie168518 的回复:]
两个人用一个empid ?
[/Quote]
--果然
create table salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into salary values(2,'ela','2007-08-20',100)
insert into salary values(1,'sam','2007-06-20',50)
insert into salary values(2,'ela','2007-05-20',70)
insert into salary values(3,'richer','2007-08-21',300)
insert into salary values(4,'bacom','2007-06-20',400)
insert into salary values(2,'sam','2007-07-20',200)
select * from salary s where not exists (select 1 from salary where empname=s. empname and changtime>s.changtime)
drop table salary
/*
empid empname changtime salary
----------- -------------------------------------------------- ------------------------------------------------------ ---------------------
2 ela 2007-08-20 00:00:00.000 100.0000
3 richer 2007-08-21 00:00:00.000 300.0000
4 bacom 2007-06-20 00:00:00.000 400.0000
2 sam 2007-07-20 00:00:00.000 200.0000
*/
select empid,max(changtime) as changtime,max(salary) as salary,
from salary
group by empid
select
a.*
from salary a
where not exists(
select *
from salary
where empname = a.empname
and changtime > a.changtime)
SELECT a.*
FROM salary a,
(
SELECT empid,MAX(changtime) AS MAXTime
FROM salary
GROUP BY empid
)
WHERE a.empid=b.empid
AND a.changtime=b.MAXTime
select
a.*
from salary a
where not exists(
select *
from salary
where empname = a.empname
and changtime > a.changtime)
create table #salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into #salary values(2,'ela','2007-08-20',100)
insert into #salary values(1,'sam','2007-06-20',50)
insert into #salary values(2,'ela','2007-05-20',70)
insert into #salary values(3,'richer','2007-08-21',300)
insert into #salary values(4,'bacom','2007-06-20',400)
insert into #salary values(2,'sam','2007-07-20',200)
select
*
from #salary as t1
where not exists
(
select 1
from #salary as t2
where t2.empname= t1.empname and t1.changtime < t2.changtime
)
drop table #salary
结果:
2 ela 2007-08-20 00:00:00.000 100.00
3 richer 2007-08-21 00:00:00.000 300.00
4 bacom 2007-06-20 00:00:00.000 400.00
2 sam 2007-07-20 00:00:00.000 200.00
create table salary
(
empid int,
empname varchar(50),
changtime datetime,
salary money
)
insert into salary values(2,'ela','2007-08-20',100)
insert into salary values(1,'sam','2007-06-20',50)
insert into salary values(2,'ela','2007-05-20',70)
insert into salary values(3,'richer','2007-08-21',300)
insert into salary values(4,'bacom','2007-06-20',400)
insert into salary values(2,'sam','2007-07-20',200)
--要求:用一句sql查询出所有员工最新时间的工资
SELECT * FROM salary a WHERE NOT EXISTS
(SELECT * FROM salary WHERE empid=a.empid AND changtime>a.changtime)