擅长:python、mysql、java
<p>对于Sql Server 2017及更高版本,您可以使用新的<code>STRING_AGG</code>函数</p>
<p><a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql" rel="noreferrer">https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql</a></p>
<blockquote>
<p>The following example replaces null values with 'N/A' and returns the
names separated by commas in a single result cell.</p>
<pre><code>SELECT STRING_AGG ( ISNULL(FirstName,'N/A'), ',') AS csv
FROM Person.Person;
</code></pre>
<p>Here is the result set.</p>
<pre><code>John,N/A,Mike,Peter,N/A,N/A,Alice,Bob
</code></pre>
</blockquote>
<p>也许更常见的用例是分组然后聚合,就像使用<code>SUM</code>、<code>COUNT</code>或<code>AVG</code>一样</p>
<pre><code>SELECT a.articleId, title, STRING_AGG (tag, ',') AS tags
FROM dbo.Article AS a
LEFT JOIN dbo.ArticleTag AS t
ON a.ArticleId = t.ArticleId
GROUP BY a.articleId, title;
</code></pre>