서브쿼리 질문드립니다 0 4 1,648

by 낭만캐치 [2014.11.17 15:31:40]


안녕하세요.

짜다가 막혀서 질문드립니다.

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

select B.ID as Id

, ( select max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

from(

           select rank() over( order by( count(*) desc ) as rk

        , failcon

        , count(*) as cnt

from A A

      , B B

where A.ID = B.ID  <-- 개인적으로 생각되는 중복 카운트 지점

and b.statcd = '07'

group by failcon )

) AS failrsncon

from B B

    ,   C C

where B.powcd = C.powcd

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

위의 쿼리를 수행 했을 때의 결과 ( 한개의 ID에 해당하는 count가 다른 실패건수의 전체집계되어 나오는 현상)

ID        failrsncon

1BA    사용자오류:200|Connect오류:400|코드오류:500

2BA    사용자오류:200|Connect오류:400|코드오류:500

3BA    사용자오류:200|Connect오류:400|코드오류:500

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

원하는 결과

ID          failrsncon

1BA     사용자오류:200 | Connect오류:400 | 코드오류:500

2BA     정상경로가아닙니다:100 | 계정을확인하세요:300 | 인증이안됐습니다.:700

3BA     보안체크가안됨:120 | 요청오류:250 | ID가없습니다.:160

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

 

어떻게 해야할까요..?

by jkson [2014.11.17 15:39:18]

아래에 마농님이 해결해주신 문제 아닌가요?


by 낭만캐치 [2014.11.17 15:47:02]
아 이건 다른 질문입니다.

by jkson [2014.11.17 17:24:49]

select B.ID as Id

, ( select max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

        || max(case when rk = 1 then failcon || ':' || '' || ' ' || cnt || '건 |' end)

from(

           select rank() over( order by( count(*) desc ) as rk

        , failcon

        , count(*) as cnt

from A A

      , B B

where A.ID = B.ID  <-- 개인적으로 생각되는 중복 카운트 지점

and b.statcd = '07'

group by failcon )

) AS failrsncon // 항상 같은 값만 나오게 되어있네요. 아래에 있는 B테이블과 연관성이 전혀 없어요.

무조건 max값만 나오게 되어있어요..

from B B

    ,   C C

where B.powcd = C.powcd

 

바깥쪽 B테이블의 id 값에 따라 failcon의 값이 정해지는 거라면 바깥쪽 B테이블과 서브쿼리와의

 

상관관계를 작성해주셔야해요.


by 낭만캐치 [2014.11.17 17:35:29]

jkson님 감사합니다.

덕분에 해결하였습니다~!

즐거운 하루 보내세요^^

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