집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 쉼표로 구분된 직원 이름 목록을 만드는 방법은 무엇입니까?
SQL Server에서 쉼표로 구분된 목록을 생성하는 쿼리
제공하신 쿼리는 테이블에서 쉼표로 구분된 직원 이름 목록을 생성하도록 설계되었습니다. 그러나 쿼리가 복잡해 혼란스러울 수 있습니다. 단계별로 분석해 보겠습니다.
1단계: 직원 이름 하위 쿼리 결합
하위 쿼리:
<code class="language-sql">SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')</code>
연결된 직원 이름을 XML로 반환합니다. "data()" 별칭은 오류를 강제하는 데 사용되며, 이는 FOR XML PATH('') 절에 의해 숨겨집니다. 그러면 태그가 없는 XML이 생성됩니다.
2단계: 공백 제거
Replace() 함수는 XML 문자열의 공백을 쉼표로 바꾸는 데 사용됩니다.
<code class="language-sql">allemp = Replace ((SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')), ' ', ', ') </code>
3단계: 그룹화 및 출력
GROUP BY DEPTNO를 사용하여 부서 번호별로 쿼리를 그룹화하세요. 그런 다음 출력을 각 부서의 직원 이름이 쉼표로 구분된 목록으로 표시됩니다.
대체 검색어
다음 쿼리를 사용하여 몇 가지 개선 사항을 적용하여 동일한 결과를 얻을 수도 있습니다.
<code class="language-sql">SELECT E1.deptno, STUFF(( SELECT ', ' + E2.ename FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR XML PATH('') ), 1, 2, '') FROM EMP AS e1 GROUP BY DEPTNO; </code>
이 쿼리는 STUFF() 함수를 사용하여 첫 번째 쉼표와 공백을 제거합니다. 또한 XML 태그 생성을 방지하기 위해 하위 쿼리의 별칭을 생략합니다.
위 내용은 SQL Server에서 쉼표로 구분된 직원 이름 목록을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!