테이블명 : test
필드 : id char(4)
id
------
2
4
5
6
위와 같은 테이블이 있으면 만약 select 시 조건에서
범위를 id 범위를 1 ~ 10 사이를 주었을경우 결과가
1,3,7,8,9,10 이런식으로 나오게 할수 있는 방법이 혹시나 있나요??
답변좀 부탁드릴께요 ^^
select id from test where id >0 and id <11 order by id
이걸 원하시는 건가요?
정말요?
위의 쿼리가 아닌것 같습니다.
데이터가 2,4,5,6 이 있고
보여지는 데이터는 위의 데이터를 제외하고 보여주는 쿼리를 원하시는듯.
제가 생각나는건 일단 test 테이블의 id 데이터에 대한 꽉찬 테이블을
임시로 만들어서 minus 를 이용해서 쿼리를 만들어야 되지 않나..생각해 봅니다.
임시테이블 : copyt
필드 : id
데이터 : 1 ~ 10
select id from copyt where id > 0 and id < 11
minus
select id from test where id > 0 and id < 11
이렇게 하면.. A - B 니까.. 1,3,7,8,9,10 이 SELECT 이 될듯.
이것도 아닌가???
지가 무식 해서 질문을 잘못 알았군요.......ㅋㅋ
우선 홍님의 minus는 sybase에서는 제공 하지 않습니다(oracle 구문이죠)
create proc test(@b int,@c int)as
declare @a intselect @a=@bselect * into #kkk from test where 1=2while @a <= @cbegininsert #kkk values (convert(char(4),@a))select @a=@a+1endselect aid from (select a.id as aid,b.id as bid from #kkk a ,test b where a.id *= b.id ) c where bid =null그래서 위와 같은 procedure를 만들었습니다
test 1,10
aid --- 1 3 7 8 9 10
이게 원하시는 건가요?
답글 감사 합니다..
위와 같은 쿼리를 원하는건데요..^^
이부분 주석좀 부탁 해도 될가요? 꾸벅...
select @a=@b /*??*/select * into #kkk from test where 1=2 /*??*/while @a <= @cbegininsert #kkk values (convert(char(4),@a))/*??*/select @a=@a+1 /*??*/endselect aid from (select a.id as aid,b.id as bid from #kkk a ,test b where a.id *= b.id ) c where bid =null
/*??*/ 처리된 부분좀 설명좀 부탁 드려요 ~~ 감사합니다.
프로시저 관련 메뉴얼을 한번 정독해 보십시요. 물론 sybase 사이트에
있습니다.
create proc test(@b int,@c int)
as
declare @a int //변수선언
select @a=@b //입력받은 변수를 @a 에 넣기
select * into #kkk from test where 1=2
//임시테이블 kkk 에 데이터 넣기. where 1=2 은 test 테이블에서 아무런 row 도 없이 select 한다는 듯.
while @a <= @c // 루프..a 가 c 보다 작거나 같을동안 돌자..
begin
insert #kkk values (convert(char(4),@a))
select @a=@a+1 // 1씩 증감
end //#kkk 에 들어가는 정보는 @b ~ @c 까지의 순차적인 값
select aid from (select a.id as aid,b.id as bid from #kkk a ,test b where a.id *= b.id ) c where bid =null
요렇게 해석이 됩니다만....직접 해 보시면 대강은 감이 오실껍니다.
답변 무지 감사 합니다.. 근데 위의 문장을 돌렸을 경우 이런 에러가...
어디가 틀린거지 ... 모르겠어요 T.T 한번만 더 봐주세요.
Procedure 'sp_test', Line 11:Incorrect syntax near '('. Server Message: Number 102, Severity 15Procedure 'sp_test', Line 11:Incorrect syntax near 'c'.
버젼이 상당히 낮은 버젼이군요...
inlineview가 안된다면 12.5.0.3 이전 버젼인데요..
Upgrade하심이 좋을듯 싶습니다,
버젼이 11.5.1.3 인데요.... 업그레이드 안하고 sybase 제공하는 패치같은것은 없나요??
patch를 설치 해도 11.5.X 입니다.
in line view는 12.5.0.3부터 제공을 합니다...
이렇게 바꿔야 할것 같군요
create proc test_proc1(@b int,@c int)as
declare @a intselect @a=@bselect * into #kkk from test where 1=2while @a <= @cbegininsert #kkk values (convert(char(4),@a))select @a=@a+1endselect a.id as aid,b.id as bid into #kkk1 from #kkk a ,test b where a.id *= b.id select aid from #kkk1 where bid =null
수고하세요