【发布时间】:2013-08-26 04:43:55
【问题描述】:
我有一些数据。我想根据data 列的值对它们进行分组。如果有 3 个或更多连续行的数据大于 10,那么这些行就是我想要的。
所以对于这个数据:
use tempdb;
go
set nocount on;
if object_id('t', 'U') is not null
drop table t;
go
create table t
(
id int primary key identity,
[when] datetime,
data int
)
go
insert into t([when], data) values ('20130801', 1);
insert into t([when], data) values ('20130802', 121);
insert into t([when], data) values ('20130803', 132);
insert into t([when], data) values ('20130804', 15);
insert into t([when], data) values ('20130805', 9);
insert into t([when], data) values ('20130806', 1435);
insert into t([when], data) values ('20130807', 143);
insert into t([when], data) values ('20130808', 18);
insert into t([when], data) values ('20130809', 19);
insert into t([when], data) values ('20130810', 1);
insert into t([when], data) values ('20130811', 1234);
insert into t([when], data) values ('20130812', 124);
insert into t([when], data) values ('20130813', 6);
select * from t;
我想要的是:
id when data
----------- ----------------------- -----------
2 2013-08-02 00:00:00.000 121
3 2013-08-03 00:00:00.000 132
4 2013-08-04 00:00:00.000 15
6 2013-08-06 00:00:00.000 1435
7 2013-08-07 00:00:00.000 143
8 2013-08-08 00:00:00.000 18
9 2013-08-09 00:00:00.000 19
怎么做?
【问题讨论】:
-
我认为您的输出错误。 15、9、1435,都在10以上怎么样。
-
"consecutive" 要求对行进行排序。所以我的意思是“连续”是首先按 id 对所有行进行排序,然后使用排序结果作为“连续”的基础。
-
对于“15, 9, 1435”,9 小于 10。
标签: sql sql-server tsql sql-server-2005