假设我通过从现有表执行分组来选择如下临时表,这是当前的临时表值:
Title Count
-------------
Sr. 11
Mrs. 2
Sra. 3
Ms. 415
Mr. 578
Run Code Online (Sandbox Code Playgroud)
我想要实现的是标题的逗号分隔值,如下所示,按计数排序
[Mrs.], [Sra.], [Sr.], [Ms.], [Mr.]
Run Code Online (Sandbox Code Playgroud)
但是,目前我只能实现以下逗号分隔值,这是#temptable 中的默认排序
[Sr.], [Mrs.], [Sra.], [Ms.], [Mr.]
Run Code Online (Sandbox Code Playgroud)
下面是我的代码。我怎样才能达到我想要的?
注意:在插入#temptable 时,我既不假设也不期望序列已经按顺序排列
DECLARE @Columns as VARCHAR(MAX)
SELECT @Columns =
COALESCE(@Columns + ', ','') + QUOTENAME(Title)
FROM
(
SELECT Title FROM #tempTable1
) AS P
Run Code Online (Sandbox Code Playgroud)
您可以这样使用STUFF函数:
DECLARE @Columns nvarchar(max);
SET @Columns = STUFF((SELECT ', ' + QUOTENAME(Title)
FROM tempTable1
ORDER BY [Count]
FOR XML PATH(''), TYPE).value('.', 'nvarchar(MAX)'), 1, 1, '');
SELECT @Columns;
Run Code Online (Sandbox Code Playgroud)
| (无列名) | | :----------------------------------- | | [夫人], [老], [老], [女士], [先生] |
db<>在这里摆弄
或者,根据您的 SQL-Server 版本,您可以使用STRING_AGG函数:
DECLARE @Columns nvarchar(max);
SELECT
STRING_AGG(QUOTENAME(Title), ',') WITHIN GROUP (ORDER BY [Count])
FROM
tempTable1;
SELECT @Columns;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
427 次 |
最近记录: |