쿼리 조언부탁드립니다. 0 4 1,484

by 풋내기 [SQL Query] [2012.05.14 09:40:33]



member 란 1개의 테이블이있구요.

이테이블에는 2008년~ 2012년까지의 회원데이터가 있습니다.

회원번호와,이름으로 2012년에 처음가입신청하고 2008~2011 년까지 신청한 기록이 없는지를 알고싶은데

어떻게 해야되는지 초보가 쿼리조언부탁드립니다.
by 부쉬맨 [2012.05.14 10:06:52]
gruop by 희원번호,이름 
having count(*) > 1
하면 해당 회원번호 , 이름에 대해서 1건이상인것들만 뽑혀나옵니다.

원하시는것은
gruop by 희원번호,이름 
having count(case when 2008 ~ 2011 then 1 else 0 ) = 0

이렇게해도되고요
exists 를 사용하셔도되고요.
방법은 여러가지일뜻합니다.




by 완전초짜 [2012.05.14 10:40:27]

WITH MEMBER AS
(
    SELECT  '홍길동' NAME , '123456789' NO , '20110204' JOIN_DATE FROM DUAL UNION ALL
    SELECT  '임꺽정' NAME , '234567891' NO , '20120204' JOIN_DATE FROM DUAL
)
SELECT  CASE WHEN COUNT(*) >= 1 THEN '데이터가 존재합니다.'
    ELSE '해당사항없음'
    END NAME
FROM    MEMBER
WHERE   NAME = '임꺽정'--'홍길동'
AND NO = '234567891'--'123456789'
AND JOIN_DATE BETWEEN '20080101' AND '20111231'

WITH MEMBER AS
(
    SELECT  '홍길동' NAME , '123456789' NO , '20110204' JOIN_DATE FROM DUAL UNION ALL
    SELECT  '임꺽정' NAME , '234567891' NO , '20120204' JOIN_DATE FROM DUAL
)
SELECT  CASE WHEN COUNT(*) >= 1 THEN '데이터가 존재합니다.'
    ELSE    '해당사항없음'
    END NAME
FROM    MEMBER A
WHERE   NAME = '홍길동'
AND NO = '123456789'
AND JOIN_DATE BETWEEN '20080101' AND '20111231'
이게 맞는지는 모르겠지만... 조인문의 하드코딩은 바인딩 변수로 바꾸시면 되실듯 싶네요...


by 풋내기 [2012.05.14 10:41:25]

감사합니다.

by 풋내기 [2012.05.14 13:44:10]

와 감사합니다. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입