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 5295 게시물 읽기
No. 5295
SQL 어떻케 발행해야죠. 매번 감사합니다.
작성자
이가루
작성일
2009-08-06 17:01
조회수
5,591

아래와 같이 TableA와 TableB가 있습니다.



TableA TbaleB
갱신일자 고객번호 구입액 고객번호 발송일
20090701 1111 30000 1111 20090501
20090702 1112 45000 1111 20090620
20090703 1113 27500 1111 20090626
20090704 1114 30000 1112 20090604
20090705 1115 30000 1112 20090609
20090706 1116 16000 1112 20090617
20090707 1117 78000 1112 20090627
20090708 1118 86000 1112 20090630
20090709 1119 25000 1122 20090601
20090710 1120 46000 1122 20090625
20090711 1121 74000 1122 20090629
20090712 1122 48000 1122 20090630
20090713 1123 20000 1123 20090620
20090714 1124 82000 1123 20090625



<조회조건 :>

1) 갱신일자 : 2090701 ~ 20090714


갱신일자에 지정해주는 기간내의 고객에게 발송한 최종일자를 가져오고 싶습니다.


복잡한 Sql은 암만 생각해도 떠오르지를 않습니다.  부탁드립니다.





<결과> 


고객번호 구입액 최종발송일
1111 30000 20090626
1112 45000 20090630
1113 27500           -
1114 30000           -
1115 30000           -
1116 16000           -
1117 78000           -
1118 86000           -
1119 25000           -
1120 46000           -
1121 74000           -
1122 48000 20090630
1123 20000 20090625
1124 82000           -


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

if OBJECT_ID('tempdb..#TableA') is not null

drop table #tableA

select * into #tableA from (

select dt='20090701', no=1111, prc=30000 union all

select dt='20090702', no=1112, prc=45000 union all

select dt='20090703', no=1113, prc=27500 union all

select dt='20090704', no=1114, prc=30000 union all

select dt='20090705', no=1115, prc=30000 union all

select dt='20090706', no=1116, prc=16000 union all

select dt='20090707', no=1117, prc=78000 union all

select dt='20090708', no=1118, prc=86000 union all

select dt='20090709', no=1119, prc=25000 union all

select dt='20090710', no=1120, prc=46000 union all

select dt='20090711', no=1121, prc=74000 union all

select dt='20090712', no=1122, prc=48000 union all

select dt='20090713', no=1123, prc=20000 union all

select dt='20090714', no=1124, prc=82000) a

 

if OBJECT_ID('tempdb..#tableB') is not null

drop table #tableB

 

select * into #tableB from (

select no=1111, dt='20090501' union all

select no=1111, dt='20090620' union all

select no=1111, dt='20090626' union all

select no=1112, dt='20090604' union all

select no=1112, dt='20090609' union all

select no=1112, dt='20090617' union all

select no=1112, dt='20090627' union all

select no=1112, dt='20090630' union all

select no=1122, dt='20090601' union all

select no=1122, dt='20090625' union all

select no=1122, dt='20090629' union all

select no=1122, dt='20090630' union all

select no=1123, dt='20090620' union all

select no=1123, dt='20090625' ) b

 

 

 

 

select a.no, a.prc, dt=isnull(b.dt, '-') from #tableA a

left outer join (

select no, dt = MAX(dt) from #tableB

group by no

) b

on a.no = b.no

order by a.no

 

.님이 2009-08-07 10:44에 작성한 댓글입니다. Edit

아직 SQL에 익숙하지 않은지라 상당히 어렵게 보입니다만, 테스트 해 보겠습니다.

다시한번 감사의 말씀 올립니다.

이가루님이 2009-08-07 18:28에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5303순차적으로 저장된 컬럼들 에서 비어 있는 값 찾는 방법 [1]
김민수
2009-08-26
6054
5302초보적인 날짜 쿼리 좀 알려주세요. [1]
박동한
2009-08-07
6866
5301함수 내에서 테이블에 저장된 레코드 개수 반환 에러. 뭐 가 문제인지 [1]
강진수
2009-08-07
6548
5295SQL 어떻케 발행해야죠. 매번 감사합니다. [2]
이가루
2009-08-06
5591
5294oracle에서 제공하는 dump 같은 함수가 뭔가요?
강철민
2009-08-05
5768
5293쿼리결과를 update하는 프로시져 만들려고 하는데요...
김삼수
2009-08-05
5944
5292두개 테이불 비교 없는 레코드만 나오게 ??? [2]
김길동
2009-08-05
5768
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다