现在有个招聘表,表里有招聘公司名称、招聘的职位、招聘时间等。
每个公司发了个招聘信息就会在这个表新添加一条记录。
比如:
id name job num time
1 牛牛公司 技术员 2名 2006-7-8
2 啊里公司 业务员 1名 2006-7-7
3 牛牛公司 服务压 1名 2006-7-7
4 长江公司 设计员 3名 2006-7-71现在我要从这个招聘表里选出前10名的公司名称、id号,
2要求选出来的公司名称不能重复,按时间排序。
并且把相同公司的的job合并到一起
例如查询top 4的结果为:1 牛牛公司 技术员,服务压 2名 2006-7-8
2 啊里公司 业务员 1名 2006-7-7
3 长江公司 设计员 3名 2006-7-7
这是以前的,但是没有达到第二条要求,希望哪位大哥解决一下,谢谢```
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:44:25 得分: 20
Select TOP 10 A.*
From 招聘表 A
Inner Join (Select name,Max([time]) As [time] From 招聘表 Group By name) B
On A.name=B.name And A.[time] =B.[time]
Order By A.[time] Desc
Top
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:45:46 得分: 20
OrSelect TOP 10 A.*
From 招聘表 A
Where [time] =(Select Max([time]) From 招聘表 Where name=A.name)
Order By A.[time] Desc
Top
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:46:48 得分: 20
OrSelect TOP 10 A.*
From 招聘表 A
Where Not Exists (Select name From 招聘表 Where name=A.name And [time]>A.[time])
Order By A.[time] Desc
每个公司发了个招聘信息就会在这个表新添加一条记录。
比如:
id name job num time
1 牛牛公司 技术员 2名 2006-7-8
2 啊里公司 业务员 1名 2006-7-7
3 牛牛公司 服务压 1名 2006-7-7
4 长江公司 设计员 3名 2006-7-71现在我要从这个招聘表里选出前10名的公司名称、id号,
2要求选出来的公司名称不能重复,按时间排序。
并且把相同公司的的job合并到一起
例如查询top 4的结果为:1 牛牛公司 技术员,服务压 2名 2006-7-8
2 啊里公司 业务员 1名 2006-7-7
3 长江公司 设计员 3名 2006-7-7
这是以前的,但是没有达到第二条要求,希望哪位大哥解决一下,谢谢```
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:44:25 得分: 20
Select TOP 10 A.*
From 招聘表 A
Inner Join (Select name,Max([time]) As [time] From 招聘表 Group By name) B
On A.name=B.name And A.[time] =B.[time]
Order By A.[time] Desc
Top
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:45:46 得分: 20
OrSelect TOP 10 A.*
From 招聘表 A
Where [time] =(Select Max([time]) From 招聘表 Where name=A.name)
Order By A.[time] Desc
Top
paoluo 一天到晚游泳的鱼 信誉: 100 2006-7-31 11:46:48 得分: 20
OrSelect TOP 10 A.*
From 招聘表 A
Where Not Exists (Select name From 招聘表 Where name=A.name And [time]>A.[time])
Order By A.[time] Desc
create function fn_job合并(@name varchar(30))
returns varchar(100)
as
begin
declare @r varchar(100)
set @r=''
select @r=@r+','+rtrim(job) from 招聘表 where name=@name order by time desc
if @r<>''
set @r=stuff(@r,1,1,'')
return @r
end
go--查询
Select TOP 10 A.id,a.name,dbo.fn_job合并(a.name) as job,a.num,a.time
From 招聘表 A
Inner Join (Select name,Max([time]) As [time] From 招聘表 Group By name) B
On A.name=B.name And A.[time] =B.[time]
Order By A.[time] Desc
insert T select 1, '牛牛公司', '技术员', 2, '2006-7-8'
union all select 2, '啊里公司', '业务员', 1, '2006-7-7'
union all select 3, '牛牛公司', '服务压', 1, '2006-7-7'
union all select 4, '长江公司', '设计员', 3, '2006-7-7'create function fun(@name varchar(10))
returns varchar(200)
as
begin
declare @re varchar(200)
set @re=''
select @re=@re+','+job from T where name=@name order by [time] desc return(stuff(@re, 1, 1, ''))
endset rowcount 10
select name, job=dbo.fun(name), [time]=max([time])
from T
group by name
order by 3 desc
set rowcount 0--result
name job time
---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
牛牛公司 技术员,服务压 2006-07-08 00:00:00.000
啊里公司 业务员 2006-07-07 00:00:00.000
长江公司 设计员 2006-07-07 00:00:00.000(3 row(s) affected)