| ID | col1 |
|---|---|
| 1 | 約翰 |
| 1 | 瑪麗 |
| 2 | 帕特里夏 |
| 2 | 查理 |
| 3 | 簡 |
| 3 | 凱倫 |
| 3 | 喬丹 |
| 3 | 羅蘭 |
輸出應如下所示
| ID | 價值觀 |
|---|---|
| 1 | 約翰,瑪麗 |
| 2 | 帕特里夏,查理 |
| 3 | 簡、凱倫、MJ、羅蘭 |
uj5u.com熱心網友回復:
在MySQL、MariaDB和SQLite中,可以使用GROUP_CONCAT聚合函式:
SELECT id,
GROUP_CONCAT(col1) AS values_
FROM tab
GROUP BY id
在PostgreSQL和SQL Server中,您可以使用STRING_AGG聚合函式:
SELECT id,
STRING_AGG(col1, ',') AS values_
FROM tab
GROUP BY id
在Oracle和DB2中,您可以使用LISTAGG聚合函式:
SELECT id,
LISTAGG(col1, ',') WITHIN GROUP(ORDER BY col1) AS values_
FROM tab
GROUP BY id
uj5u.com熱心網友回復:
答案取決于您使用的資料庫。檸檬已經為不同的資料庫展示了很好的方法。我只想添加另一個,因為STRING_AGG它是在 SQL Server 2017 中引入的。如果您使用較舊的 SQL Server DB,則可以STUFF改用:
SELECT DISTINCT t1.id,
STUFF(
(SELECT ',' col1
FROM yourtable t2
WHERE t1.id = t2.id
FOR XML PATH (''))
,1,1,'') AS "values"
FROM yourtable t1;
uj5u.com熱心網友回復:
對于 Oracle 11gR2 及更高版本...
Select
ID,
ListAgg(COL1, ', ') OVER(PARTITION BY ID ORDER BY ID) "VALUES"
From tbl
Group by ID
Order by ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491573.html
標籤:sql
上一篇:DEFAULT約束是實際約束嗎?
