34,590
社区成员
发帖
与我相关
我的任务
分享
declare @table table (kh varchar(10),date8 datetime)
insert into @table
select '001','2011-7-14 10:00' union all
select '001','2011-7-14 11:00' union all
select '001','2011-7-14 18:00' union all
select '001','2011-7-15 10:00' union all
select '002','2011-7-14 9:00' union all
select '002','2011-7-14 11:00' union all
select '002','2011-7-14 13:00' union all
select '002','2011-7-14 15:00' union all
select '002','2011-7-15 09:00' union all
select '002','2011-7-15 11:00'
;with cte as
(
select *,ROW_NUMBER() OVER(PARTITION BY kh,convert(varchar(10),date8,120) ORDER BY date8 asc) as RN
from @table
),cte2 as
(
select *,ROW_NUMBER() OVER(PARTITION BY kh,convert(varchar(10),date8,120) ORDER BY date8 desc) as RN
from @table
)
select cte.kh,convert(varchar(10),cte.date8,120) as date8,
convert(varchar(10),cte.date8,108) as time8,
convert(varchar(10),cte2.date8,108) as time9
from cte inner join cte2 on cte.kh=cte2.kh
and convert(varchar(10),cte.date8,120)=convert(varchar(10),cte2.date8,120)
where cte.RN=1 and cte2.RN=1
输出的结果如下:
001 2011-07-14 10:00:00 18:00:00
001 2011-07-15 10:00:00 10:00:00
002 2011-07-14 09:00:00 15:00:00
002 2011-07-15 09:00:00 11:00:00
--对的,要再加一对括号
SELECT a.bh, a.xm, a.kh, a.bmmc,b.date8, b.time8 FROM sys_employee AS a, kaoq_sksj AS b
WHERE a.kh=b.gzkh
and
(not exists
(select 1 from kaoq_sksj c where c.gzkh=b.gzkh and b.date8=c.date8 and c.time8<b.time8)
or
not exists
(select 1 from kaoq_sksj c where c.gzkh=b.gzkh and b.date8=c.date8 and c.time8>b.time8))
select kh,date8,min(time8),max(time8)
from (select a.bh,a.xm,a.kh,a.bmmc,b.date8,b.time8
from sys_employee as a, kaoq_sksj as b where a.kh=b.gzkh)
aa group by kh,date8 order by kh
--还少了一个条件
SELECT a.bh, a.xm, a.kh, a.bmmc,b.date8, b.time8 FROM sys_employee AS a, kaoq_sksj AS b
WHERE a.kh=b.gzkh
and not exists
(select 1 from kaoq_sksj c where c.gzkh=b.gzkh and b.date8=c.date8 and c.time8<b.time8)
or
not exists
(select 1 from kaoq_sksj c where c.gzkh=b.gzkh and b.date8=c.date8 and c.time8>b.time8)
select kh,date8,time8=min(time8),time9 =max(time8)
from (select a.bh,a.xm,a.kh,a.bmmc,b.date8,b.time8
from sys_employee as a, kaoq_sksj as b where a.kh=b.gzkh)
aa group by kh,date8 order by kh
--上面一个<应改为>
SELECT a.bh, a.xm, a.kh, a.bmmc,b.date8, b.time8 FROM sys_employee AS a, kaoq_sksj AS b WHERE a.kh=b.gzkh
where not exists
(select 1 from kaoq_sksj c where b.date8=c.date8 and c.time8<b.time8)
or
not exists
(select 1 from kaoq_sksj c where b.date8=c.date8 and c.time8>b.time8)
SELECT a.bh, a.xm, a.kh, a.bmmc,b.date8, b.time8 FROM sys_employee AS a, kaoq_sksj AS b WHERE a.kh=b.gzkh
where not exists
(select 1 from kaoq_sksj c where b.date8=c.date8 and c.time8<b.time8)
or
not exists
(select 1 from kaoq_sksj c where b.date8=c.date8 and c.time8<b.time8)
;with maco as
(
select a.bh,a.xm,a.kh,a.bmmc,b.date8,b.time8
from sys_employee as a, kaoq_sksj as b where a.kh=b.gzkh
)
select
kh,date8=convert(varchar(10),date8,120),
time8=min(convert(varchar(5),time8,108)),
time9 =max(convert(varchar(5),time8,108))
from maco
group by kh,date8 order by kh
;with cte as
(
--你的查询语句
)
select
kh,date8=convert(varchar(10),date8,120),
time8=min(convert(varchar(5),time8,108)),
time9 =max(convert(varchar(5),time8,108))
from cte
group by kh,date8 order by kh