서브쿼리 SUM하는 방법좀 알려주세요. 0 7 1,431

by DB초짜 [2014.09.02 17:59:38]


헐.jpg (33,502Bytes)

SELECT TO_CHAR(A.INSERT_DATE,'MM' ) AS REQ_MONTH
        ,FUN_TCODE_NAME('B041', B.DEPT_CODE) AS DEPT_CODE
        ,A.LR_TYPE AS LR_TYPE 
        ,A.LR_NAME AS LR_NAME 
        ,A.LR_NO AS LR_NO
        ,A.REQUEST_MENO_OK AS REQUEST_MENO_NO 
        ,TO_CHAR(A.INSERT_DATE, 'YYYY/MM/DD ') AS REQ_DATE
        ,NVL( (SELECT TO_CHAR(C.INSERT_DATE, 'YYYY/MM/DD ') AS RESPONSE_DATE
               FROM TLAWREVIEW C WHERE C.INSERT_ID =A.INSERT_ID AND DO_FLAG='50'),'미처리') AS RESP_DATE 
               ,A.DO_FLAG        
         ,   (
               (SELECT TO_DATE((TO_CHAR(C.INSERT_DATE, 'YYYYMMDD '))) AS RESPONSE_DATE 
               FROM TLAWREVIEW C WHERE C.INSERT_ID =A.INSERT_ID AND DO_FLAG='50')+1 -(TO_DATE((TO_CHAR(A.INSERT_DATE,'YYYYMMDD'))))                 
              ) AS REP_CNT 
               ,A.NOTE AS NOTE
            FROM TLAWREVIEW A 
               ,TUSER B 
               WHERE 1 = 1 
               AND A.INSERT_ID = B.USER_ID 
               AND A.DO_FLAG IN ('30','50')
               AND A.INSERT_DATE BETWEEN(TO_DATE('2014/05'||'/01', 'YYYY/MM/DD')) 
               AND (TO_DATE('2014/10'||'/01', 'YYYY/MM/DD'))

 

rep_cnt라는 컬럼이 있는데 날짜 수 빼서 가져오는 컬럼인데 이 컬럼을 sum해서 아래에 합계로 뿌려주고 싶은데 

몇시간째 삽질 중입니다. 

쿼리는 맞다고 하니 이  부분만 해결 해 주실분~ 집에 가고 싶네요 ㅠ

 

by 마농 [2014.09.02 18:26:44]

쿼리가 안맞는것 같은데요.
서브쿼리의 조건이 왠지 부족해 보입니다.
INSERT_ID, DO_FLAG 조건 외에, 뭔가 연결고리가 더 있어야 할 듯 한데요?


질문하신 합계 부분은 ROLLUP 으로 간단하게 해결됩니다만...
원본 쿼리 자체에 문제가 있을것 같은 스멜이...


by 마농 [2014.09.02 18:39:48]

SQL 을 통해 추측해본 것은...
30 이 요청인 듯 하고, 50 이 처리인 듯 한데요?
요청건에 대한 처리까지 소요일수를 계산하는 듯 하구요.
메인에서 30만 가져오는게 아닌 30, 50 을 다 가져오는것이 의문이구요?
서브에서 요청에 대한 처리건을 연결하는 듯 하지만? 연결고리가 부족합니다.
한사람의 유저가 요청을 여러번하고 처리가 여러번 될텐데..
이렇게 유저ID 만으로 연결하면 안될 듯 하네요.
요청번호라든가 하는 연결고리가 있지 않을까? 하는 생각이 드네요.


by DB초짜 [2014.09.02 19:03:47]

이거 요청하신 분들이 원래 프로그래밍을 전혀 모른 고객이라서 그냥 무조건 해달라고 해서 해주는식 입니다. ㅠ  어제 저장 된걸 오늘 날짜에 보여달라고 하신분도 계시고 ....

요청번호는 Lr_no구요..  쿼리는 이 사이트 오기전에 늘 받아서 개발만하다가 이 사이트 오면서.. 여기서 진짜 3년만에 쿼리 제대로 짜기 시작했네요;   늘 화면단만 개발하다보니 요구사항에대해서 제가 정확하게 분석 못한것일수도 있는데 일단은 정답부터 알려주시면 안되나요?;


by 마농 [2014.09.03 08:20:47]

정답이 없는 문제입니다.

정답을 만들어 내기 위해 댓글을 단 것입니다.

잘못을 바로 잡아야만 정답을 도출할 수 있습니다.

요청과 처리 사이의 연결고리가 필요해 보입니다.

이 연결고리를 찾아야만 문제가 해결될 것으로 보입니다.

 

일단 원하시는 합계 부분에 대해서는 ROLLUP 을 이용하시면 된다고 이미 언급했었습니다.


by DB초짜 [2014.09.03 10:19:22]

아뇨 쿼리의 정답이 아니라 ..급한대로 보여줘야 해서 서브쿼리 컬럼을 rollup으로 어떤식으로 가져오는지 잘 몰라서 애초에 질문드린건데요;


by 마농 [2014.09.03 10:59:23]
SELECT a, b, c, d
     , SUM(e)
  FROM ( 쿼리 )
 GROUP BY ROLLUP((a, b, c, d))
;
-- http://www.gurubee.net/oracle/advanced

 


by DB초짜 [2014.09.03 16:29:44]

감사합니다..  잘 해결 됐네요..  쿼리 공부 많이 해야겠네요.. 창피할 정도로 많이 모르네요..

다시 한번 답변 감사드립니다..(꾸벅)

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