34,590
社区成员
发帖
与我相关
我的任务
分享
create table a(ID varchar(50), time datetime, name varchar(10) , typeid varchar(10))
insert into a values('5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F' , '2011-01-23 08:38:00.000' , '异常时间' , '10536')
insert into a values('D07FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('pp7FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('733EA38A-B449-4F53-A6AC-72630DA60DFC' , '2011-01-23 13:38:00.000' , '异常时间' , 'M33333')
insert into a values('p27FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-22 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('p37FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-21 08:38:00.000' , '异常时间' , 'E2345') create table b(typeid varchar(10), userID varchar(10))
insert into b values('10536' , '张三')
insert into b values('E2345' , '张三')
insert into b values('M33333', '张三')
go
select top 2 m.id , m.time, m.name , m.typeid from
(
select t.* , px = (select count(1) from a where typeid in (select typeid from b where b.userid = '张三') and time = t.time and id < t.id) + 1
from a t where typeid in (select typeid from b where b.userid = '张三')
) m
where px = 1
drop table a , b
/*
id time name typeid
-------------------------------------------------- ------------------------------------------------------ ---------- ----------
5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F 2011-01-23 08:38:00.000 异常时间 10536
733EA38A-B449-4F53-A6AC-72630DA60DFC 2011-01-23 13:38:00.000 异常时间 M33333
(所影响的行数为 2 行)
*/
create table a(ID varchar(50), time datetime, name varchar(10) , typeid varchar(10))
insert into a values('5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F' , '2011-01-23 08:38:00.000' , '异常时间' , '10536')
insert into a values('D07FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('pp7FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('733EA38A-B449-4F53-A6AC-72630DA60DFC' , '2011-01-23 13:38:00.000' , '异常时间' , 'M33333')
create table b(typeid varchar(10), userID varchar(10))
insert into b values('10536' , '张三')
insert into b values('E2345' , '张三')
insert into b values('M33333', '张三')
go
select m.id , m.time, m.name , m.typeid from
(
select t.* , px = (select count(1) from a where typeid in (select typeid from b where b.userid = '张三') and time = t.time and id < t.id) + 1
from a t where typeid in (select typeid from b where b.userid = '张三')
) m
where px = 1
drop table a , b
/*
id time name typeid
-------------------------------------------------- ------------------------------------------------------ ---------- ----------
5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F 2011-01-23 08:38:00.000 异常时间 10536
733EA38A-B449-4F53-A6AC-72630DA60DFC 2011-01-23 13:38:00.000 异常时间 M33333
(所影响的行数为 2 行)
*/
create table a(ID varchar(50), time datetime, name varchar(10) , typeid varchar(10))
insert into a values('5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F' , '2011-01-23 08:38:00.000' , '异常时间' , '10536')
insert into a values('D07FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('pp7FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('733EA38A-B449-4F53-A6AC-72630DA60DFC' , '2011-01-23 13:38:00.000' , '异常时间' , 'M33333')
create table b(typeid varchar(10), userID varchar(10))
insert into b values('10536' , '张三')
insert into b values('E2345' , '张三')
insert into b values('M33333', '张三')
go
--select * from a
--select * from b
;with f as
(
select a.* from a join b on a.typeid=b.typeid
)
select id,time,name,typeid from (select id0=row_number()over(partition by time order by time),* from f)t where id0<2
drop table a,b
/*id time name typeid
-------------------------------------------------- ----------------------- ---------- ----------
5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F 2011-01-23 08:38:00.000 异常时间 10536
733EA38A-B449-4F53-A6AC-72630DA60DFC 2011-01-23 13:38:00.000 异常时间 M33333
(2 行受影响)*/
create table a(ID varchar(50), [time] datetime, name varchar(10) , typeid varchar(10))
insert into a values('5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F' , '2011-01-23 08:38:00.000' , '异常时间' , '10536')
insert into a values('D07FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('pp7FDE95-2E95-4408-ABD4-83931FB22CA6' , '2011-01-23 08:38:00.000' , '异常时间' , 'E2345')
insert into a values('733EA38A-B449-4F53-A6AC-72630DA60DFC' , '2011-01-23 13:38:00.000' , '异常时间' , 'M33333')
SELECT ID, [time], name, typeid
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY [time] ORDER BY [time]) AS ROWID
FROM A
) AS A
WHERE A.ROWID=1
drop table a
--------------------------
ID time name typeid
-------------------------------------------------- ----------------------- ---------- ----------
5FF8A054-E5B6-443F-A2EB-D7CA905F7E9F 2011-01-23 08:38:00.000 异常时间 10536
733EA38A-B449-4F53-A6AC-72630DA60DFC 2011-01-23 13:38:00.000 异常时间 M33333
(2 row(s) affected)