본문 바로가기

Slack 채널 정리

mariaDB - null 아닌 최종값을 한 줄로 표시

이벤트 발생할 때 전달되는 메시지에 변경된 속성값만 들어오는데 이렇게 저장된 테이블에서 각 컬럼별로 null 이 아닌 최종값을 한 줄의 row 로 머지해서 처리해야 하는 경우가 생겨서 고민해왔는데 mysql 의 GROUP_CONCAT 란 함수 이용해서 어떻게 결과는 구했습니다. 제가 SQL 이 짧은 관계로 더 나은 해법을 못 찾고 있는데 조언 좀 ...
말보다 예가 이해하기 좋을겁니다. 사용 예를 올려놨습니다. http://sqlfiddle.com/#!9/8e6ab1/1아, 참고로 Oracle 에는 비슷한 함수로 LISTAGG 란게 있군요.

 

SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.

Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run.

sqlfiddle.com

select cont_nr,
  SUBSTRING_INDEX(GROUP_CONCAT(YD_POS_TP_CD), ',', -1) YD_POS_TP_CD,
  SUBSTRING_INDEX(GROUP_CONCAT(CONT_POS_BLK_NM), ',', -1) CONT_POS_BLK_NM,
  SUBSTRING_INDEX(GROUP_CONCAT(CONT_POS_BAY_NM), ',', -1) CONT_POS_BAY_NM,
  SUBSTRING_INDEX(GROUP_CONCAT(IF(LMT_TEMP=0, null, LMT_TEMP)), ',', -1) LMT_TEMP,
  SUBSTRING_INDEX(GROUP_CONCAT(CURT_TEMP), ',', -1) CURT_TEMP
from iv_temp
group by cont_nr