[解決済み] Sql Serverで複数行を1つのカンマ区切り値に変換する方法【重複
2023-02-02 06:53:57
質問
SQL Serverでテーブルバリュー関数を作成したいのですが、カンマ区切りでデータを返したいのですが、どうすればいいですか?
例えばテーブルを
tbl
ID | Value
---+-------
1 | 100
1 | 200
1 | 300
1 | 400
ここで、この関数を使ってクエリを実行すると
Func1(value)
SELECT Func1(Value)
FROM tbl
WHERE ID = 1
欲しい出力は
100,200,300,400
どのように解決するのですか?
テストデータ
DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)
クエリ
SELECT ID
,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
FROM @Table1
WHERE ID = t.ID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM @Table1 t
GROUP BY ID
結果セット
╔════╦═════════════════════╗
║ ID ║ List_Output ║
╠════╬═════════════════════╣
║ 1 ║ 100, 200, 300, 400 ║
╚════╩═════════════════════╝
SQL Server 2017 およびそれ以降のバージョン
SQL Server 2017 以降のバージョンで作業している場合、組み込みの SQL Server Function を使用することができます。 STRING_AGG を使用して、カンマ区切りリストを作成することができます。
DECLARE @Table1 TABLE(ID INT, Value INT);
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400);
SELECT ID , STRING_AGG([Value], ', ') AS List_Output
FROM @Table1
GROUP BY ID;
結果セット
╔════╦═════════════════════╗
║ ID ║ List_Output ║
╠════╬═════════════════════╣
║ 1 ║ 100, 200, 300, 400 ║
╚════╩═════════════════════╝
関連
-
[解決済み】SQL Server データベース復元エラー:指定されたキャストは有効ではありません。(SqlManagerUI)
-
[解決済み】フラットファイルの日付カラムで「キャスト指定に無効な文字値があります」を修正する方法とは?
-
[解決済み] SQL Server: sys.master_files vs. sys.database_files
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】カンマで区切られた文字列を個別の行に変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] sql文の角括弧[]の使い方を教えてください。
-
[解決済み] SSRS レポートの定義が無効です。
-
[解決済み] Microsoft OLE DB Provider for SQL Server エラー '80040e14' '=' 付近の構文が正しくない
-
[解決済み] SQL Serverで文字列からすべてのスペースを削除する
-
[解決済み] SQLのReplace関数内の正規表現?
-
[解決済み] SQL Server : varchar を INT に変換する。
-
[解決済み] SQL Serverでforeachを記述する方法とは?
-
[解決済み] SQL Server のストアドプロシージャを SQL Developer で実行するには?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み】サブクエリから複数行を1つの区切りフィールドに「結合」するSQL Server関数を作成する方法とは?[重複している]。