오라클 조인,gorup by 잘 안돼서 질문드리빈다. 0 4 871

by 겸둥이k [SQL Query] [2022.07.11 13:49:52]


안녕하세요 left oter join 걸때  조인테이블이  1:N 이라 현재 본테이블 값이 2번이 뜨고있습니다.  원래 서브쿼리를 썻지만 속도가느려 조인을 한번사용하니까 빨라서 사용할려고합니다. 

현재 쿼리 간단하게 보여드리겠습니다.

select 
A.로그인ID
A.수량
A.금액
FROM SI_마스터 A
LEFT OUTER JOIN ( 
SELECT 
DECODE(C.파일설명,'000001',C.첨부파일ID,'')AS 증빙1,
DECODE(C.파일설명,'000002',C.첨부파일ID,'')AS 증빙2,
C.참조ID
FROM SI_첨부파일
WHERE (C.파일설명='000001' or C.파일설명='000002' )
AND 사용여부 ='Y''
AND  삭제여부 ='N'
group by c.참조ID,c.파일설명,c.첨부파일ID
)chum on chum.참조ID = A.신청마스터ID

 

조인쿼리만 select 했봤을시 group by가 안되어  값이 2개 가 뜨더라구요 

증빙1  증빙2 참조ID

att123   null        2022-124

null       att0008   2022-124

 

저데이터를 한데이터로 gorup by 방법이 없을까요 

 

제가 원하는데이터는 조인걸때  단일열이되어 보여주고싶습니다.

 

by 마농 [2022.07.11 14:23:23]
SELECT a.로그인id
     , a.수량
     , a.금액
     , MIN(DECODE(c.파일설명, '000001', c.첨부파일id)) 증빙1
     , MIN(DECODE(c.파일설명, '000002', c.첨부파일id)) 증빙2
  FROM SI_마스터 a
  LEFT OUTER JOIN SI_첨부파일 c
    ON a.신청마스터id = c.참조id
   AND c.사용여부 = 'Y'
   AND c.삭제여부 = 'N'
   AND c.파일설명 IN ('000001', '000002')
 GROUP BY a.로그인id, a.수량, a.금액
;

 


by 겸둥이k [2022.07.11 15:22:09]

답변감사드립니다. 

제가 간단하게 적을려고 컬럼을 3개만적었지만 

전체 A.* 일떄는 group by 어떻게하면될까요?


by 신이만든지기 [2022.07.11 15:26:32]

grouping 하지 않는 컬럼은 모두 group by 절에 명시해야합니다.

group by col1, col2, col3 .... coln


by 마농 [2022.07.11 15:50:46]
-- 서브쿼리(인라인뷰) 안쪽만 바꿔 보면
(
SELECT 참조id
     , MIN(DECODE(파일설명, '000001', 첨부파일id)) 증빙1
     , MIN(DECODE(파일설명, '000002', 첨부파일id)) 증빙2
  FROM si_첨부파일
 WHERE 파일설명 IN ('000001', '000002')
   AND 사용여부 = 'Y'
   AND 삭제여부 = 'N'
 GROUP BY 참조id
) chum

 

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