在ITPUB上有一则非常巧妙的SQL技巧 学习一下 记录在这里
最初的问题是这样的:
我有一个表结构 fphm kshm
(第二个字段内可能是连续的数据 可能存在断点 )
怎样能查询出来这样的结果 查询出连续的记录来 就像下面的这样?
ITPUB上的朋友给出了一个非常巧妙的答案:
SQL>SELECT b fphm MIN (b kshm) Start_HM MAX (b kshm) End_HM FROM (SELECT a * TO_NUMBER (a kshm ROWNUM) cc FROM (SELECT * FROM t ORDER BY fphm kshm) a) b GROUP BY b fphm /
FPHM START_HM END_HM
巧思妙想 就在一念之间 lishixinzhi/Article/program/Oracle/201311/17496
DECLARE @T1 table(UserID int , [name] nvarchar(50),num int)
insert into @T1 (UserID,[name],num) values (1001,'a',8)
insert into @T1 (UserID,[name],num) values (1002,'b',6)
insert into @T1 (UserID,[name],num) values (1003,'c',8)
insert into @T1 (UserID,[name],num) values (1004,'a',8)
insert into @T1 (UserID,[name],num) values (1005,'b',8)
select * from @t1
select a.* from
(select UserID,[name],[num] from @t1 ) a join
(select UserID,[name],[num] from @t1 ) b on a.UserID<b.UserID and a.UserID+1=b.UserID
and a.num=b.num
group by a.userid,a.[name],a.[num]
得到结果:1003 c 8
1004 a 8
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)