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 5844 게시물 읽기
No. 5844
조건에 따라 다른 테이블참조하는 SQL문????
작성자
이만실
작성일
2011-02-17 10:09
조회수
8,096

모두모두 행복한 하루되시길....

환경 : 기존에 A라는 테이블이 너무 커져서 A테이블의 a1이라는 필드(날자값이 저장)를 기준으로 A_old 라는 테이블을 만들어 두개로 분리했습니다.

A 테이블 : a1 필드가 '20100101' 부터 현재 까지의 자료가 저장됨

A_old 테이블 : a1 필드가 '20100101' 보다 적은 값이 저장됨

* A와 A_old 테이블은 테이블명만 다르고 구조는 똑같습니다.

질문 : C 테이블의 레코드가 A테이블의 키값과 A_old 테이블의 키값을 참조하여 A 및 A_old 테이블의 값을 참조 해야 합니다.

특정일을 기준으로 나눠진 똑같은 구조의 두개의 테이블을 하나의 다른 테이블에서 한꺼번에 JOIN을 하고 싶습니다.

select
case when C.fore_time >= '201001010000' Then B.fore_end1 else A.fore_end1 End,
case when C.fore_time >= '201001010000' Then B.fore_end2_end else A.fore_end2 End,
case when C.fore_time >= '201001010000' Then B.fore_end3 else A.fore_end3 End,
C.vessel_cs,
C.fore_time,
C.edit_man,
C.remark_kind
from C, B , A
where (C.B_id = (case when C.fore_time >= '201001010000' Then B.pk_id else A.pk_id End))

이렇게 하면 안되는건가요???

* fore_time 필드는 A 와 A_old 테이블에 같이 있습니다.

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

 SQL Sever버전이 어찌되는지 모르겠지만.

2005이상이면 테이블 파티셔닝사용하시면 되고요 (http://wizcody.co.kr/43 참고)

2000이하면...A테이블과 A_old테이블을 union all하셔서 뷰를 하나 만드신 다음 만든 뷰와 조인하시면 되겠습니다...

create view vA

as

    select * from A

    union all

    select * from A_old

 

 

지나가다님이 2011-02-17 15:01에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5847테이블 결과 합치기 가능한가요? [1]
최지훈
2011-02-23
8025
5846MS SQL 2005 한글 깨짐 help me pls pls pleeeeeese [1]
2011-02-22
7721
5845constratint 조회하기 [1]
김상환
2011-02-17
6133
5844조건에 따라 다른 테이블참조하는 SQL문???? [1]
이만실
2011-02-17
8096
5843여러개의 테이블을 한번에 삭제하는 방법
나그네
2011-02-15
6191
5841datediff 함수 질문입니다. [1]
송은진
2011-02-13
6939
5840프로시져관련 문의 입니다.
풍풍
2011-02-10
6105
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.030초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다