declare @s int,@e int
set @s = 400
set @e = 770
if exists(select 1 from qzh_temp where @s between 开始号码 and 结束号码)
and exists(select 1 from qzh_temp where @e between 开始号码 and 结束号码)
select 1
else
select 0
set @s = 400
set @e = 770
if exists(select 1 from qzh_temp where @s between 开始号码 and 结束号码)
and exists(select 1 from qzh_temp where @e between 开始号码 and 结束号码)
select 1
else
select 0
解决方案 »
- 这句SQL怎么写?关于在局域网内。。。。
- 求一查询
- 如何用SELECT输入多条记录, 不是查询!
- 为什么用powerdesigner12。1生成的脚本到sql2005去执行就很多错误啊?
- 如何在sp_executesql的使用中,使用变量做为一个表名?请各位出手了.
- 关于SQL Server事务处理的一系列问题。我分有多,只要能给出详细答案,我愿按字算分。(2)
- 加急!!!!高手,在线等
- 求助一个连续3天超库存的sql语句写法
- windows 2003 下面为什么装不了SQL 2000啊
- SQL SERVER 数据库已做发布,现我想移动数据库设备物理位置
- 在远程链接ms sql2005数据库空间时,有链接超时的提示.我在"工具"-"选择"中把超时时间重新设置后.还是提示超时.请各位高手指点一下.
- 请教磁带机备份问题
-- Author: liangCK 小梁
-- Date : 2008-11-28 19:47:07
---------------------------------
--> 生成测试数据: @qzh_temp
DECLARE @qzh_temp TABLE (开始号码 INT,结束号码 INT)
INSERT INTO @qzh_temp
SELECT 101,201 UNION ALL
SELECT 305,400 UNION ALL
SELECT 401,600 UNION ALL
SELECT 601,760 UNION ALL
SELECT 761,800 UNION ALL
SELECT 802,990--SQL查询如下:DECLARE @start INT,@end INT
SELECT @start=400,@end=770SELECT
开始号码,
结束号码,
flag=CASE WHEN 开始号码=(SELECT TOP 1 结束号码
FROM @qzh_temp
WHERE 结束号码<A.开始号码
ORDER BY 结束号码 DESC)+1
AND 结束号码>@start
AND 开始号码<=@end
THEN 1
ELSE 0
END
FROM @qzh_temp AS A/*
开始号码 结束号码 flag
----------- ----------- -----------
101 201 0
305 400 0
401 600 1
601 760 1
761 800 1
802 990 0(6 行受影响)
*/
insert into qzh_temp select 101,201
insert into qzh_temp select 305,400
insert into qzh_temp select 401,600
insert into qzh_temp select 601,760
insert into qzh_temp select 761,800
insert into qzh_temp select 802,990
go
declare @s int,@e int
set @s=400
set @e=700select id=identity(int,1,1),startid into #t1 from qzh_temp a where not exists(select 1 from qzh_temp where endid=a.startid-1)
select id=identity(int,1,1),endid into #t2 from qzh_temp a where not exists(select 1 from qzh_temp where startid=a.endid+1)
select startid,endid from (
select a.id,a.startid,b.endid from #t1 a inner join #t2 b on a.id=b.id
)t where t.startid<=@s and t.endid>=@e
go
drop table qzh_temp,#t1,#t2
/*
startid endid
----------- -----------
305 800*/