안녕하세요 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 방법이 없을까요
제가 원하는데이터는 조인걸때 단일열이되어 보여주고싶습니다.
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.금액
;
답변감사드립니다.
제가 간단하게 적을려고 컬럼을 3개만적었지만
전체 A.* 일떄는 group by 어떻게하면될까요?
grouping 하지 않는 컬럼은 모두 group by 절에 명시해야합니다.
group by col1, col2, col3 .... coln
-- 서브쿼리(인라인뷰) 안쪽만 바꿔 보면
(
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