^^^^^高手查询^^^^^^^

Jipi 2003-09-12 11:19:11
我有记录内容如下
field1 field2
111111 222222
222223 444444
444445 666666
要得出 111111-666666
field1 field2
111111 222222
333333 444444
444445 666666
要得出 111111-222222
333333-666666
如何实现,谢谢各位高手朋友

...全文
77 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_rose 2003-09-14
  • 打赏
  • 举报
回复
假设“开始编号”和“结束编号”没有重复:

select * into #ta from 序号表 where 1=2
while 1=1
begin
insert #ta select x.开始编号,y.结束编号
from 序号表 as x inner join 序号表 as y on y.开始编号=x.结束编号+1
if not exists(select * from #ta) break

delete 序号表
insert 序号表 select * from #a
end
select * from 序号表



如果“开始编号”或者“结束编号”有重复,要首先处理一下,将重复记录只留下一个。
w_rose 2003-09-14
  • 打赏
  • 举报
回复
用SQL语言擅长的风格写程序,就像精神正常的人说话一样自然。

相比之下,用C++写程序,就像是“祥林嫂”一样徐徐叨叨的,或者就像老夫子一样“迂腐”。
Jipi 2003-09-13
  • 打赏
  • 举报
回复
说拍了就是判断这两个字段的数是不是连续的,如果是得出最小与最大值
111111 222222
222223 444444
444445 666666
111111-222222 到222223 -444444 到444445-666666
222222-222223是连续的....
得出111111-666666,表结构如不对要怎么改才好实现呢
w_rose 2003-09-13
  • 打赏
  • 举报
回复
declare @a int,@b int,@c int,@d int
while 1=1
begin
select top 1 @a=x.开始编号,@b=x.结束编号,@c=y.开始编号,@d=y.结束编号
from 序号表 as x inner join 序号表 as y on y.开始编号=x.结束编号+1
if @@rowcount=0 break

delete 序号表 where 开始编号=@c and 结束编号=@d
update 序号表 set 结束编号=@d where 开始编号=@a and 结束编号=@b
end
select * from 序号表


非常希望各位注意:不要受到3GL编程语言的狭隘思维方式的束缚。
eastpond 2003-09-13
  • 打赏
  • 举报
回复
应该有相同的帖子呀,找找看
yujohny 2003-09-13
  • 打赏
  • 举报
回复
规则有点看不明白,请说出规则
zhbname 2003-09-13
  • 打赏
  • 举报
回复
寫存儲過程用遞歸。通過自聯接選取。
這個問題相同於一個樹,有父節點子節點了。
因為你的表結構是這樣建的,所以隻有用遞歸了。
hdslah 2003-09-13
  • 打赏
  • 举报
回复
不知你意思
yunfeng007 2003-09-13
  • 打赏
  • 举报
回复
??有点看不懂啊
happy_0325 2003-09-13
  • 打赏
  • 举报
回复
不明白。
wenbo_ying 2003-09-12
  • 打赏
  • 举报
回复
什么规则啊,说明白一点啊

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧