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
운영게시판
최근게시물
Oracle Q&A 33162 게시물 읽기
No. 33162
쉽게 쿼리하는 방법을 알고 싶습니다.
작성자
박명수
작성일
2008-03-03 13:58
조회수
1,964

테이블 구조는 이렇습니다.


SEQ       NUMBER

STATUS VARCHAR2(1)

STATUS_1 VARCHAR2(1)

STATUS_2 VARCHAR2(1)

STATUS_3 VARCHAR2(1)

STATUS_4 VARCHAR2(1)

STATUS_5 VARCHAR2(1)


STATUS 필드를 UPDATE 하고자 하는데, 조건이 이렇습니다.


STATUS_1 ~ STATUS_5 의 값이 모두 N 이거나 P 이면 P 값을


STATUS_1 ~ STATUS_5 의 값이 하나라도 F가 있으면 F 값을


박고 싶습니다.


하려니까 DECODE를 수십개를 쓰게 되네요..


쉽게 하는법이 있을까요.. 


부탁드립니다.

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

create table regtest (
seq number,
status varchar2(1),
status_1 varchar2(1),
status_2 varchar2(1),
status_3 varchar2(1),
status_4 varchar2(1),
status_5 varchar2(1) );

alter table regtest add constraint regtest_pk primary key  (seq);

insert into regtest values (1, null, 'N', 'N', 'N', 'N', 'N');
insert into regtest values (2, null, 'P', 'P', 'P', 'P', 'P');
insert into regtest values (3, null, 'N', 'P', 'N', 'P', 'N');
insert into regtest values (4, null, 'N', 'P', 'F', 'P', 'N');
insert into regtest values (5, null, 'N', 'N', 'N', 'F', 'N');
insert into regtest values (6, null, 'N', 'P', 'T', 'P', 'N');

commit;

select * from regtest;

update /*+ bypass_ujvc */
(
 select a.status a_status, b.status b_status
 from regtest a, (
      select  seq,
        case when regexp_replace(concated, '.*F.*', null) is null then 'F'
         when regexp_replace(concated, '[N|P]+', null) is null then 'P'
         else status end status
           from (select seq, status, status_1||status_2||status_3||status_4||status_5 as concated from regtest)
     ) b
 where a.seq = b.seq
)
set a_status = b_status;

select * from regtest;

woos님이 2008-03-03 14:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
33165oracle 10g client 와 OraOLEDB....
이소미
2008-03-03
1473
33164트리구조에서 각 동일레벨간 비중에 따른 추진률 산정....... [4]
노지훈
2008-03-03
2932
33163차집합 관련 쿼리 질문입니다..ㅠㅠ [2]
db초보
2008-03-03
1792
33162쉽게 쿼리하는 방법을 알고 싶습니다. [1]
박명수
2008-03-03
1964
33161Oracle SQL Developer 관련 질문.. [1]
최영일
2008-03-03
5164
33160컬럼길이를 구할 수 있나요? [2]
디사넷
2008-03-03
1607
33159shell 질문입니다.
while
2008-03-03
1184
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다