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
운영게시판
최근게시물
DB2 Q&A 1091 게시물 읽기
No. 1091
[질문] 꼭 좀 알려주세요.. 두 테이블에서 조회 후 중복제거..
작성자
beginner
작성일
2006-08-31 13:08ⓒ
2006-08-31 13:12ⓜ
조회수
7,734
 

안녕하세요.
계속해서 이것만 붙잡고 query를 만들어봤는데
초보라 아무리 해도 풀리지가 않습니다.
고수님들 꼭 좀 알려주세요..

[table 1]
------------------------------------------------------
날짜     순번    ID
------------------------------------------------------
20060820   100   user1 
20060820   101   user3 
20060820   102   user1 
20060820   104   user2 
20060820   105   user5
20060820   106   user4
20060820   107   user5
20060830   100   user2
20060830   101   user1
....

[table 2]
------------------------------------------------------
날짜   순번   처리상태   처리금액
------------------------------------------------------
20060820   100       3000
20060820   101   E  10000
20060820   102   E  200
20060820   104       3000
20060830   100   E  100
20060830   101       300
.....


[원하는 결과]
------------------------------------------------------
날짜   ID    총처리건수   정상건수   정상금액   오류건수   오류금액
------------------------------------------------------
20060820   user1  2      1     3000    1     200
20060820   user3  1      0     0         1     10000
20060820   user2  1      1     200      0     0
20060830   user1  1      0     0         1     100
20060830   user2  1      1     300      0     0
.....

조회기간을 조건으로 주면 query를 실행하는 것인데요..
오류여부는 table2 에 상태 field가 E 인 것과 E가 아닌 것으로 구분됩니다.
count는 table2 에서 받아오는 거고..
table1 은 단지 사용자ID 만 받아오려고 사용합니다.
결과는 날짜, 사용자ID 로 정렬해서 받아오구요..
제가 만든 query는 지금 올린 글 보다 더 길어서.. 올리려다가 그냥 둡니다..
알려주세요..

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

결과가 좀 다르지만 .. 


with

t1(날짜,순번,ID) as ( values

('20060820','100','user1'),

('20060820','101','user3'),

('20060820','102','user1'),

('20060820','104','user2'),

('20060820','105','user5'),

('20060820','106','user4'),

('20060820','107','user5'),

('20060830','100','user2'),

('20060830','101','user1'))

,

t2(날짜,순번,처리상태,처리금액) as ( values

('20060820','100',' ',3000),

('20060820','101','E',10000),

('20060820','102','E',200),

('20060820','104',' ',3000),

('20060830','100','E',100),

('20060830','101',' ',300))

select b.날짜,a.ID,

       count(*) 총처리건수,

       sum(case when 처리상태 = 'E' then 0 else 1 end) 정상건수,

       sum(case when 처리상태 = 'E' then 0 else 처리금액 end) 정상금액,

       sum(case when 처리상태 = 'E' then 1 else 0 end) 오류건수,

       sum(case when 처리상태 = 'E' then 처리금액 else 0 end) 오류금액

  from t1 a,t2 b

 where a.순번=b.순번

   and a.날짜=b.날짜

 group by b.날짜,a.ID

 order by b.날짜, count(*) desc,sum(case when 처리상태 = 'E' then 1 else 0 end) desc ;


날짜     ID    총처리건수  정상건수    정상금액    오류건수    오류금액  

-------- ----- ----------- ----------- ----------- ----------- -----------

20060820 user1           2           1        3000           1         200

20060820 user3           1           0           0           1       10000

20060820 user2           1           1        3000           0           0

20060830 user2           1           0           0           1         100

20060830 user1           1           1         300           0           0

도님이 2006-08-31 14:33에 작성한 댓글입니다.
이 댓글은 2006-08-31 14:41에 마지막으로 수정되었습니다. Edit

죄송합니다. 답이 늦었습니다.

정말 고맙습니다. 24시간 넘게 고민한건데..

가르쳐 주신 쿼리로 돌리니 잘 되요 ^^

감사합니다 ^^

begineer님이 2006-09-02 01:08에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1096[질문] UNION ALL 사용시 결과가 이해가 안되네요. [2]
이준식
2006-09-06
7209
1095Private Sort heap과Shared Sort heap 차이점은? [1]
dbman
2006-09-04
7735
1092sqlldr과 같은 기능이 있는지요 [1]
송지영
2006-09-01
7355
1091[질문] 꼭 좀 알려주세요.. 두 테이블에서 조회 후 중복제거.. [2]
beginner
2006-08-31
7734
1089스냅샷 모니터요소 [1]
db2
2006-08-30
6849
1088DB2의 SP 작성중에 [1]
노주현
2006-08-30
7659
1087[해결] db2, 파워빌더 연결, odbc 세팅
조경진
2006-08-25
10126
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다