쿼리작성에 도움을 청합니다. 0 2 2,352

by 거제도원주민 [SQL Query] SQL [2018.07.04 12:48:01]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
안녕하세요. 이곳에서 많은 도움을 받고 있습니다.
쿼리 작성에 도움을 청합니다.
 
아래 SAMPLE데이타
 
SUB_SYS_CODE  PGM_ID  PGM_NAME_DESC
--------------------------------------------
GASAA   GASAA0010A  도서목록및대여관리
        GASAA0020A  사내문서및증빙자료관리
        GASAA0030A  차량운행정보관리
        GASAA0040A  지게차량운행정보관리
        GASAA0050A  식수인원정보예량관리
        GASAA0060A  주말 근무자현황관리
GWAPA   GWAPA0010A  결재 작성함
<span style="color:#ff0000">MMGLA   GWAPA0010A  결재대기함</span>
        GWAPA0020A  결재 대기함
        GWAPA0030A  결재 진행함
        GWAPA0040A  결재 반려함
        GWAPA0050A  결재 완료함
GWAPB   GWAPB0010A  지출결의서
        GWAPB0020A  업무협조전
        GWAPB0030A  품의서
        GWAPB0040A  발주서
        GWAPB0050A  근태계작성
GWAPC   GWAPC0010A  문서표준양식목록
HRBAE   HRBAE0010A  사원인사정보 등록
        HRBAE0011I  사원인사정보 조회
        HRBAE0020A  인사조직정보 등록
        HRBAE0020I  인사조직정보 조회
HRBAF   HRBAE0100A  직원 근무근태관리
        HRBAE0200I  직원일일출근현황
HRBAZ   HRBAZ0010A  표준정보관리
<span style="color:#0000cd">        MMGLA0030A  POR등록및확정</span>
MMGLB   MMGLB0010A  발주등록
        MMGLB0020A  발주수정및확정
        MMGLB0060I  발주현황조회
        MMGLB0080A  업체별구매단가정보관리
MMGLC   MMGLC0010A  입고등록
        MMGLC0020A  입고수정
        MMGLC0030I  입고내역 조회
        MMGLC0040A  입고차수마감
MMPEC   MMGLC0060I  세금계산서 수수현황 조회
        MMGLC0120I  미입고현황
        MMGLC0200A  사급자재입고관리
        MMGLC0300A  소요자재공급구분현황
        MMGLC0500A  묶음단위자재리스트(DSME)
MMGLD   MMGLD0020A  사급자재불출등록및불출현황

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

위의 데이타 샘플은 PGM_ID가 앞에서 5자리까지 유일하게 구분이 됩니다.

위의 샘플내용은 아래 쿼리에 의한 결과 입니다. ROW_NUMBER() 순위함수를 잘못 적용했는지

MMGLA GWAPA0010A 결재대기함 --- 이 잘못 표기 됩니다. ㅡ>

MMGLA MMGLA0030A POR등록및확정 -->이렇게 되어야 되는데..

제가 어떤 부분이 잘못 적용했을까요?

쿼리 조언 부탁 드립니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT *
FROM   (SELECT DECODE(RN1, 1, SUB_SYS_CODE) SUB_SYS_CODE,
               DECODE(RN2, 1, PGM_ID)       PGM_ID,
               PGM_NAME_DESC                PGM_NAME_DESC
        FROM   (SELECT SUB_SYS_CODE,
                       PGM_ID,
                       PGM_NAME_DESC,
                       ROW_NUMBER()  OVER(  PARTITION BY SUB_SYS_CODE         ORDER BY PGM_ID, PGM_NAME_DESC) RN1,
                       ROW_NUMBER()  OVER(  PARTITION BY SUB_SYS_CODE, PGM_ID ORDER BY PGM_NAME_DESC        )   RN2
                FROM   (SELECT DISTINCT SM004M.SUB_SYS_CODE,
                               SM004M.PGM_ID,
                               SM004M.PGM_NAME_DESC
                        FROM   SM004M
                        WHERE 1 = 1
                          AND SM004M.NATN_LNGU_CODE = 'KO'
                          AND SM004M.PGM_USE_INDC = 'Y'
                        ORDER BY SM004M.PGM_ID
                        )
               )
         )
WHERE  1 = 1
ORDER  BY PGM_ID

 

by 마농 [2018.07.04 14:23:09]

쿼리도 좀 불필요한 부분이 보이긴 하지만(예 : rn2 는 무의미)
쿼리문제가 아니라 데이터 문제로 보이네요.
PGM_ID 앞 5자리와 SUB_SYS_CODE 가 불일치 한것 같네요.


by 거제도원주민 [2018.07.04 14:32:52]

감사합니다.

데이타 검증해 보니 과거 데이타에 불일치한 정보가

남아 있었네요.... 정말 감사합니다.

다시한번 생각 하게 됩니다. 이런 생각없이 프로그램 짜고 있다니...

늘 감사합니다.

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