ホームページ >データベース >mysql チュートリアル >SQL Server で従業員名のカンマ区切りリストを作成する方法

SQL Server で従業員名のカンマ区切りリストを作成する方法

DDD
DDDオリジナル
2025-01-18 10:17:09137ブラウズ

How to Create a Comma-Delimited List of Employee Names in 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。