database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4319 게시물 읽기
No. 4319
쿼리 질문 드립니다.
작성자
김영윤(probugs)
작성일
2008-07-07 14:57
조회수
5,199

실무에서 작업을 하다가 도움이 절실해서 글을 씁니다.

열차번호, 열차타입,출발시간 필드를 가진 SCHEDULE 이라는 테이블이  있습니다.



열차번호   열차타입      출발시간 

-------------------------------- 

A001           0              07:20:00

B001           0              07:30:00

B001           1              07:42:00

B001           2              08:00:00

C001           0              07:33:00




데이터를 가져오는 조건은 현재시간부터 30분량만 가져올수 있습니다.

예를 들어 현재시간이 7:10 분이면 7시 10분 ~ 7:40분 분량의 스케줄인

A001 0, B001 0, C001 0 스케줄만 가져올수 있습니다.



그런데 원하는 결과는...

B001의 타입이 1,2 인 열차는 시간기준으로는 대상열차가 아니지만 동일한 열차번호이기 때문에 포함시키고자 하는 것입니다. 




사실 이 테이블은 필드도 엄청 많이 있으며...복잡한  프로시저로 되어 있습니다.

(SELECT * FROM SCHEDULE WHERE 열차타입 IN(0, 1, 2) 이런식으로 답변주지 마세요..ㅠ)




열차번호   열차타입      출발시간 

-------------------------------- 

A001           0              07:20:00

B001           0              07:30:00

C001           0              07:33:00



기존에 나온 30분량 스케줄 결과값을 뽑아낸것에...

열차번호에 열차타입이 0 이외의 것이 있으면 포함시켜서 아래와 같은 결과값을 내야합니다. 


열차번호   열차타입      출발시간 

-------------------------------- 

A001           0              07:20:00

B001           0              07:30:00

B001           1              07:42:00

B001           2              08:00:00

C001           0              07:33:00




미리 답변에 감사드립니다

이 글에 대한 댓글이 총 2건 있습니다.

 

WITH TMP AS

(

        SELECT TNUM = 'A001', TTYPE = 0, TH='07:20:00' UNION ALL

        SELECT TNUM = 'B001', TTYPE = 0, TH='07:30:00' UNION ALL

        SELECT TNUM = 'B001', TTYPE = 1, TH='07:42:00' UNION ALL

        SELECT TNUM = 'B001', TTYPE = 2, TH='08:00:00' UNION ALL

        SELECT TNUM = 'C001', TTYPE = 0, TH='07:33:00'

)

 

SELECT A.* FROM TMP A

INNER JOIN (

        SELECT TNUM FROM TMP

        WHERE TH BETWEEN '07:10:00' AND '07:40:00'

        ) B

ON A.TNUM = B.TNUM

 

.님이 2008-07-07 15:39에 작성한 댓글입니다. Edit

답변 감사합니다. 그런데 제가 미쳐 적지 못했는데

RUN_DATE 라고해서 스케줄 날짜 정보도 있거든요.

그냥 A.TNUM = B.TNUM 만 같게하면 모든 날짜가 다 나와버립니다...


날짜가 가져올때 WHERE RUN_DATE='' 라고 할수 없는게

오늘 날짜만 아니고... 내부에서 날짜 조건도 많이 있거든요.(ELSP가 1이면 다음날짜로 인식 등..)


열차번호   열차타입      출발시간     날짜          elsp

-----------------------------------------------------

A001           0              07:20:00    20080707        0

B001           0              07:30:00    20080707        0

B001           1              07:42:00    20080707        0

B001           2              08:00:00    20080707        0

C001           0              07:33:00    20080707        0

A001           0              09:20:00    20080708        0

B001           0              09:30:00    20080708        0

B001           1              09:42:00    20080708        1


정말 어렵네요. 다시한번 부탁드려요ㅠ


김영윤님이 2008-07-07 18:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4322스토어드 프로시져에서 특정 문자 찾기 [1]
kimjeehyun
2008-07-09
5288
4321업데이트 문장에서 메소드 문의. [5]
궁금이
2008-07-09
5186
4320데이타베이스 위치를 변경문의 부탁합니다. [1]
초보자
2008-07-09
4737
4319쿼리 질문 드립니다. [2]
김영윤
2008-07-07
5199
4316깨진 mdf 복원시 에러가 나옵니다.
free
2008-07-05
5314
4315[질문] 주기적으로 일정 table에 업데이트를 하려고 하는데.. [2]
임현묵
2008-07-05
5150
4314SELECT 쿼리 질문입니다. 부탁드려요. [4]
산호세달밤
2008-07-04
5683
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다