안녕하세요. 현재 데이터를 엑셀형식으로 내려줄 필요가 있어 쿼리를 짜고 있습니다.
그런데 요구사항이 같은 데이터일 경우에 표시가 되지 않게 해달라고 해서 찾고 있는데 제 선에서 해결이 힘들어 문의를 남깁니다..
SELECT A.ID, A.NAME, B.ETC1, B.ETC2, B.ETC3 FROM CAT A INNER JOIN TB_ETC B ON A.ID = B.CATID
| ID | NAME | ETC1 | ETC2 | ETC3 |
| 10 | CAT1 | A | A | A |
| 10 | CAT1 | B | B | B |
| 10 | CAT1 | C | C | C |
| 11 | CAT5 | D | D | D |
위와 같은 결과에서
| ID | NAME | ETC1 | ETC2 | ETC3 |
| 10 | CAT1 | A | A | A |
| B | B | B | ||
| C | C | C | ||
| 11 | CAT2 | D | D | D |
| E | E | E |
이런식으로 출력하는 방법이 있을까요?
후처리를 하려고 하니 너무 오래 걸려서 문의남깁니다..!
테이블 관계는 CAT(one to many)ETC 입니다!
-- ETC 테이블의 정렬 기준이 필요합니다.
-- ORDER BY 1 부분의 1 대신 정렬기준항목 적어주면 됩니다.
SELECT CASE ROW_NUMBER() OVER(PARTITION BY a.id ORDER BY 1) WHEN 1 THEN a.id END id
, CASE ROW_NUMBER() OVER(PARTITION BY a.id ORDER BY 1) WHEN 1 THEN a.name END name
, b.etc1
, b.etc2
, b.etc3
FROM cat a
INNER JOIN tb_etc b
ON a.id = b.catid
;
감사합니다! 바로 적용하였습니다 :)