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 중국어 웹사이트의 기타 관련 기사를 참조하세요!