본문 바로가기

msSQL3

[MSSQL] 한 그룹 내 여러 행 하나로 합치기 - ROW_NUMBER, JOIN, CONCAT 활용하기 MSSQL 의 STRING AGG이나 MYSQL의 GROUP_CONCAT 함수를 사용하지 않고, 여러 개 ROW를 쉼표로 구분된 하나의 값으로 만드는 방법을 소개하고자 합니다. STRING_AGG 나 STUFF를 활용할 수 없는 버전의 경유 ROW_NUMBER, JOIN, CONCAT 을 사용해 같은 결과를 추출해볼 수 있습니다. RANK를 만들어, 다음 순위의 행과 현재 행을 JOIN해 CONCAT으로 현재 값에 구분자(,)와 다음 문자열을 붙이는 방법으로 Studytonight 포럼에 게재된 내용을 참고해 예시 데이터로 재구성하였습니다. 예시 데이터는 아래와 같고, 중간 중간 이해를 돕기 위해 With문을 끊어서 서술하였습니다. City State_Name Phoenix AZ Tucson AZ Mes.. 2023. 1. 28.
[MSSQL] 한 그룹 내 여러 행 하나로 합치기 - STRING AGG STRING AGG 함수를 사용해 여러 개 ROW를 쉼표로 구분된 하나의 값으로 만드는 방법을 소개하고자 합니다. 단, MSSQL 2017 이상 버전만 해당 함수를 활용가능합니다. STRING AGG가 안될 경우, MSSQL에서 처리하는 방법에 대해서는 아래 글에서 소개하였습니다. [MSSQL] 한 그룹 내 여러 행을 하나의 값으로 합치기 - ROW_NUMBER, JOIN, CONCAT 활용하기 MS SQL에서 해당 함수를 소개한 문서를 보면, 특정 기사에 삽입된 태그들을 뉴스 제목과 함께 정렬한다든지, 한 그룹의 이메일 수신인을 한 번에 보낼 수 있게 묶어준다든지 실제 회사에서 운영 업무 시 활용해볼 수 있는 예시들이 많이 기재되어 있습니다. 그만큼 활용도가 높은 함수로 보입니다. 준비한 예시 데이터는.. 2023. 1. 24.
[MSSQL] WHILE을 이용한 LOOP 생성 - 구간별 데이터 한번에 추출하는 반복문 만들기 서비스 지표가 시간이 지남에 따라 변화한 양상을 확인하기 위해, 똑같은 내용의 SQL문을 일자 정보만 계속 바꿔서 반복 추출하곤 했는데요. 이번에 WHILE을 이용해서 실행 한 번에 데이터를 추출하는 방법을 찾게 되어 이를 공유하고자 합니다. 이해를 위해 solvessql에서 제공하는 '서울시 공공자전거 (따릉이) 이용현황' 데이터 예제를 가지고 WHILE을 어떻게 사용하는 지에 대한 예시를 포스팅하고자 합니다. ( 데이터 출처 : https://solvesql.com/ 의 rental_history 테이블) 따릉이는 대여 후 4시간이 경과했는데도 반납이 되지 않을 경우, 도난으로 간주합니다. 서비스 측면에서 4시간 이후에 반납된 자전거의 개수와 비율은 꾸준히 줄어들고 있는지 관리해야 하는 지표라고 가정.. 2022. 12. 19.