정보, 통신, 기술/BI와 DB

[링크] Combine Multiple Records Comma Separated In One Column MSSQL

최윤호 2010. 7. 11. 13:14
반응형
여러 row를 하나의 column에 comma로 분리해서 조회하는 퀴리입니다.
데이터 구조는 정규화를 고려해서 row 중심으로 설계하지만, UI선 row로 처리하는 것보단 박스 등의 안에 쭉~~ 나열하고 싶을 때가 종종 있습니다.
물론 row로 갖고 와서 loop를 돌면서 response.write해도 괜찮지만, 메인 row에 서브 row 등으로 구성될 때는 정말 loop안에서 또 loop 하고 싶진 않죠. 이럴 때는 아래처럼 메인 쿼리에 서브 퀴리로 한번에 메인 row들과 서브 한 column으로 갖고 올 수 있어 딱 좋습니다.

http://csharpdotnetfreak.blogspot.com/2009/07/mssql-combine-columns-comma-separated.html

위 예제는 부서 목록을 보여주는 데, 부서에 속한 사람들을 한번에 보고 싶은 경우입니다. 부서도 목록이고, 부서에 속한 사람도 목록이므로 이중 테이블 구조인데, 단순 조회이므로 그렇게 복잡하게 구성하고 싶지 않은 것이죠.
그래서 부서에 속한 사람들을 부서 목록의 한 column에 comma로 분리된 문자로 만듭니다.

SELECT DISTINCT Department
          , EmpNames = substring( ( SELECT ', ' + FirstName
                                                     FROM Employees e2
                                                   WHERE e2.Department = e1.Department FOR XML path(''), elements
                                              ),2,500)
  FROM Employees e1

단순하죠? 즐겁게 코딩하세요^^
반응형