Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine durch Kommas getrennte Liste von Mitarbeiternamen in SQL Server?
Abfrage zum Erstellen einer durch Kommas getrennten Liste in SQL Server
Die von Ihnen bereitgestellte Abfrage dient dazu, eine durch Kommas getrennte Liste von Mitarbeiternamen aus einer Tabelle zu erstellen. Die Komplexität der Abfrage kann Sie jedoch verwirren. Lassen Sie es uns Schritt für Schritt aufschlüsseln.
Schritt 1: Unterabfragen von Mitarbeiternamen kombinieren
Unterabfrage:
<code class="language-sql">SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')</code>
Gibt den Namen des verbundenen Mitarbeiters als XML zurück. Der Alias „data()“ wird verwendet, um einen Fehler zu erzwingen, der dann durch die Klausel FOR XML PATH('') ausgeblendet wird. Dies führt zu XML ohne Tags.
Schritt 2: Leerzeichen entfernen
Die FunktionReplace() wird verwendet, um Leerzeichen in XML-Strings durch Kommas zu ersetzen:
<code class="language-sql">allemp = Replace ((SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')), ' ', ', ') </code>
Schritt 3: Gruppierung und Ausgabe
Verwenden Sie GROUP BY DEPTNO, um Abfragen nach Abteilungsnummer zu gruppieren. Zeigen Sie dann die Ausgabe als durch Kommas getrennte Liste der Mitarbeiternamen für jede Abteilung an.
Alternative Abfrage
Die folgende Abfrage kann mit einigen Verbesserungen auch verwendet werden, um die gleichen Ergebnisse zu erzielen:
<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>
Diese Abfrage verwendet die Funktion STUFF(), um das erste Komma und Leerzeichen zu entfernen. Außerdem wird der Alias in der Unterabfrage weggelassen, um die Erstellung von XML-Tags zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine durch Kommas getrennte Liste von Mitarbeiternamen in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!