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 41036 게시물 읽기
No. 41036
컬럼값 비교.. 도움부탁드려요!!
작성자
꿈희
작성일
2015-12-22 10:03ⓒ
2015-12-22 11:44ⓜ
조회수
9,514

WITH EMP AS
(
SELECT  'U90001' UIDX, '홍길동' UNAME, '8005121612333' JUMIN_NO, '1' GUBUN, '1900123' PID  FROM dual    --동일인
union all SELECT 'U90001' UIDX, '홍길동' UNAME, '8005121612333' JUMIN_NO, '1' GUBUN, '2015020' PID  FROM dual   --동일인
union all SELECT '000000' UIDX, '황희진' UNAME, '6710102051555' JUMIN_NO, '1' GUBUN, '1986029' PID  FROM dual
union all SELECT '000000' UIDX, '황희진' UNAME, '8005021612333' JUMIN_NO, '1' GUBUN, '2014088' PID  FROM dual
union all SELECT 'U90008' UIDX, '나영석' UNAME, '7904031133200' JUMIN_NO, '1' GUBUN, '2012012' PID  FROM dual
)
select UIDX, UNAME,JUMIN_NO,GUBUN,PID
from EMP
where uname = :uname     --들어오는 값
and substr(jumin_no, 1,6) = :birthdt  --들어오는 생년월일 ex.800512
 

 

==================================================================================

결과가 나오고 싶은것은 결과의 컬럼값을 비교하는 것인데요... (오라클10.* 버전입니다.)

1) 나오는 건이 1건인경우 UIDX, UNAME, JUMIN_NO, GUBUN, PID  select출력                                         
2) 나오는 건이 2건이상인 경우는                                                                                
 -2건이상인 경우 UIDX, UNAME, JUMIN_NO가 같으면 동일인이라 판단해  UID, UNAME, JUMIN_NO, GUBUN, PID select   
 -2건이상인 경우 UIDX, UNAME, JUMIN_NO가 같지않으면 동일인아님이라 판단해 '동일인아님' 구분값 select

하는 것입니다.

이것을 어떻게 해야 할지 모르겠네요.. 프로그램으로 처리해야 할 부분이 아니고 sql로 해결해야 하는 부분이라서...  

도움좀 주세요!!

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

 요구조건을 이해하지 못했는데요

 

where uname = :uname

and substr(jumin_no, 1, 6) = :birthdt

이름이같고 생일이 같은데 실제로는 다른사람일때 동일인아님 을 출력해달라는거같은데

동일인 아님의 값을 어디에 넣어달라는건지 알려주세요

셀(bbads)님이 2015-12-22 14:47에 작성한 댓글입니다.

음,, 이건 sql로 안될까요ㅠㅠ

emp테이블에 가입대상자들만 회원가입을 해주는 것을 개발하려고 합니다.

그런데 pid가 개인번호가 PK인데.. 개인번호가 입력값으로 들어올 수가 없어서...

 

이름과 생년월일로만 구분을 해야 하는데... 1건이 나오면 해피하지만 동일주민번호를 가진 사람이 여러건이 있을 수 있습니다. 한사람이 개인번호가 여러건이 테이블에 쌓여있거든요..

 

어쨋든 2건이상의 데이터가 나올경우 이름과 주민번호가 동일하면 동일인으로 판단해서 넌 동일인이니 그냥 가입할 수 있지만 2건이상의 데이터에 이름과 주민번호가 동일하지 않으면 다른사람으로 인식해서 

 

넌 개인번호를 입력하지 않으면 회원가입할 수 있는 대상인지 아닌지 우리가 알수 없다라는 것을 알려주려고 합니다. 

 

구분만 sql에서 주어지면되요..

참 구구절절이죠ㅠㅠ

꿈희님이 2015-12-22 15:29에 작성한 댓글입니다.
이 댓글은 2015-12-22 15:30에 마지막으로 수정되었습니다. Edit

SELECT uidx, uname, jumin_no, gubun, pid
     , CASE COUNT(DISTINCT uidx||'-'||uname||'-'||jumin_no) OVER()
       WHEN 1 THEN '정상' ELSE '비정상' END gubun
  FROM emp
 WHERE uname = :uname
   AND jumin_no LIKE :birthdt || '%'
;

마농(manon94)님이 2015-12-23 17:38에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41039쉼표로 옆으로 표현된 데이타를 세로로 표현하기 [1]
정재영
2015-12-24
8639
41038한 row로 쿼리 추출 방법? [1]
strider
2015-12-23
8613
41037초보 개발자 쿼리 질문 좀 드릴게요 [3]
황수영
2015-12-22
8902
41036컬럼값 비교.. 도움부탁드려요!! [3]
꿈희
2015-12-22
9514
41035레프트 조인에서 서브쿼리 사용 방법 [2]
정재봉
2015-12-21
8902
41034COMMIT 명령 후 멈춤현상
크리리리
2015-12-18
8510
41033달력에 사용할 쿼리 질문입니다. [1]
정준민
2015-12-16
8913
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다