Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich eine durch Kommas getrennte Liste von Mitarbeiternamen in SQL Server?

Wie erstelle ich eine durch Kommas getrennte Liste von Mitarbeiternamen in SQL Server?

DDD
Freigeben: 2025-01-18 10:17:09
Original
132 Leute haben es durchsucht

How to Create a Comma-Delimited List of Employee Names 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>
Nach dem Login kopieren

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 Funktion

Replace() 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage