Mis*_*sky 9 sql-server aggregate t-sql concat
我有这个代码:
DECLARE @MyTable AS TABLE
(
[Month] INT,
Salary INT
);
INSERT INTO @MyTable VALUES (1,2000), (1,3100);
SELECT [Month], Salary FROM @MyTable;
Run Code Online (Sandbox Code Playgroud)
输出:

我想NVARCHAR合并工资(按月分组),这样它就会是这样的:'2000,3100'
我将如何有效地做到这一点?
Eri*_*ing 10
如果您使用的是 SQL Server 2017+,则有一个内置函数比使用 XML 和 STUFF 等的子查询更易于使用。
您可以使用STRING_AGG。
SELECT
p.OwnerUserId,
aggro =
STRING_AGG
(
p.Score,
', '
)
FROM dbo.Posts AS p
WHERE p.Score > 100
GROUP BY p.OwnerUserId
SELECT
p.OwnerUserId,
aggro_order =
STRING_AGG
(
p.Score,
', '
)
WITHIN GROUP
(
ORDER BY
p.Score DESC
)
FROM dbo.Posts AS p
WHERE p.Score > 100
GROUP BY p.OwnerUserId
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情..
DECLARE @MyTable AS TABLE
(
[Month] INT,
Salary INT
);
INSERT INTO @MyTable VALUES (1,2000), (1,3100);
SELECT [Month],
STUFF((
SELECT ',' + CONVERT(NVARCHAR(30),Salary)
from @MyTable
WHERE Month = out.Month
FOR XML Path(''))
,1,1,'') csv
FROM @MyTable out
GROUP BY Month;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |