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 6692 게시물 읽기
No. 6692
점심시간을 이용한 질문하나 드립니다..
작성자
오철희(white572)
작성일
2013-07-11 12:26
조회수
7,682

같은 테이블에서 조건1에 해당하는 데이터와 조건2에 해당하는 중복 데이터를 한번 조회해봤습니다.


-- 입력된 값 중에서 7월달 값중에서 6월달 일자가 겹치는 경우가 있을경우 조회
SELECT 날짜
  FROM TABLE A
 WHERE EXISTS
       (SELECT 1
         FROM TABLE B
        WHERE 날짜 >= 20130701
              AND 날짜 <= 20130731
              AND SUBSTRING( 날짜, 7, 2 ) = SUBSTRING(A.날짜, 7, 2 ) 
       )
       AND A.날짜 >= 20130701
       AND A.날짜 <= 20130731 ;
      
-- 입력된 값 중에서 7월달 값중에서 6월달 일자가 겹치는 경우가 있을경우 제외하고 조회
SELECT *
  FROM TABLE1 A
 WHERE 날짜 NOT IN
       (SELECT 날짜
         FROM TABLE A
        WHERE EXISTS
              (SELECT 1
                FROM TABLE B
               WHERE 날짜 >= 20130701
                     AND 날짜 <= 20130731
                     AND SUBSTRING( 날짜, 7, 2 ) = SUBSTRING(A.날짜, 7, 2 )
              )
              AND A.날짜 >= 20130701
              AND A.날짜 <= 20130731 
       )
       AND 날짜 >= 20130701
       AND 날짜 <= 20130731;

-- 쿼리는 맞는지 잘 모르겠습니다 ㅠㅠ 급하게 짜서

질문 ] 이 중복되는값을 쿼리로 조회를 해놨는데 기존의 7월 데이터에 6월 중복값 / 6월 중복제외값을 한번에 UPDATE하거나 INSERT하려면  어떻게 해야되나요?

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

원하셨던 쿼리가 

SELECT 날짜 
  FROM TABLE A 
 WHERE EXISTS 
       (SELECT 1 
         FROM TABLE B 
        WHERE 날짜 >= '20130601' 
              AND 날짜 <= '20130631' 
              AND SUBSTRING( 날짜, 7, 2 ) = SUBSTRING(A.날짜, 7, 2 ) 
       ) 
       AND A.날짜 >= '20130701' 
       AND A.날짜 <= '20130731' ;
 
였다고 하면 당연히 update는 
 
UPDATE TABLE
   SET 컬럼 = 새값
 WHERE EXISTS 
       (SELECT 1 
         FROM TABLE B 
        WHERE 날짜 >= '20130601' 
              AND 날짜 <= '20130631' 
              AND SUBSTRING( 날짜, 7, 2 ) = SUBSTRING(A.날짜, 7, 2 ) 
       ) 
       AND A.날짜 >= '20130701' 
       AND A.날짜 <= '20130731' ;
 
겠고,
 
새로운 테이블에 insert 라면
 
SELECT *
  INTO 새테이블이름
  FROM TABLE A 
 WHERE EXISTS 
       (SELECT 1 
         FROM TABLE B 
        WHERE 날짜 >= '20130601' 
              AND 날짜 <= '20130631' 
              AND SUBSTRING( 날짜, 7, 2 ) = SUBSTRING(A.날짜, 7, 2 ) 
       ) 
       AND A.날짜 >= '20130701' 
       AND A.날짜 <= '20130731' ;
 
라는 건 당연히 아실거 같은 냄새가 쿼리에서 물씬 풍겨나오는데 말입니다.... *^_^*
 
 
우욱님이 2013-07-11 23:15에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6695포트 문제 [1]
박해일
2013-07-12
7298
6694하나의 자료를 업데이트하지않고.. 여러개를 한번에 수정 할 경우? [2]
우와
2013-07-11
8283
6693간단한 조회 문의 드립니다. [4]
초보입니다.
2013-07-11
7330
6692점심시간을 이용한 질문하나 드립니다.. [1]
오철희
2013-07-11
7682
6690다시 재 질문 좀 드리겠습니다.^^ [1]
SH
2013-07-05
7447
6689게임랭킹 [1]
박판규
2013-07-01
7490
6688쿼리 질문하나 드립니다. [3]
초보자
2013-06-25
7927
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다