标签: string-agg

无法识别 string_agg 内置函数名称 - SQL Server 12.0

我想按某些列按表分组并显示其他列的值。在 SQL v.2017 中我可以使用 string_agg 函数来做到这一点。但我的 SQL 版本是 2012。我该怎么做...

create table dbo.TaskPeriods
(
 [id] [int] NULL,
 [startDate] [datetime] NULL,
 [endDate] [datetime] NULL
 )
 -------------------------------
insert into test.dbo.TaskPeriods values(1,'2018-07-24 00:00:00.000','2018-07-24 10:00:00.000')
insert into test.dbo.TaskPeriods values(2,'2018-07-24 00:00:00.000','2018-07-24 10:00:00.000')
insert into test.dbo.TaskPeriods values(3,'2018-07-24 08:00:00.000','2018-07-24 12:00:00.000')
 --------------------------------------------------------
select id,startDate,endDate from  test.dbo.TaskPeriods
 --------------------------------------------------------
select 
min (startDate)
,max (endDate)
--,string_agg(id,',')  //How to Do this Without string_agg Function
FROM test.dbo.TaskPeriods
group by startDate,endDate
Run Code Online (Sandbox Code Playgroud)

有没有办法将一个特定列与 SQL Server 12.0 中的另一组列连接起来?

sql group-concat sql-server-2012 string-agg

8
推荐指数
0
解决办法
5848
查看次数

STRING_AGG 与 CASE WHEN

架构

CREATE TABLE person
(
     [first_name] VARCHAR(10), 
     [surname] VARCHAR(10), 
     [dob] DATE, 
     [person_id] INT
);

INSERT INTO person ([first_name], [surname], [dob] ,[person_id]) 
VALUES
    ('Alice', 'AA', '1/1/1960', 1),
    ('Bob'  , 'AA', '1/1/1980', 2),
    ('Carol', 'AA', '1/1/2018', 3),
    ('Dave' , 'BB', '1/1/1960', 4),
    ('Elsa', ' BB', '1/1/1980', 5),
    ('Fred' , 'BB', '1/1/1990', 6),
    ('Gina' , 'BB', '1/1/2018', 7);

CREATE TABLE person_membership
(
    [person_id] INT, 
    [personstatus] VARCHAR(1), 
    [membership_id] INT, 
    [relationship] INT
);

INSERT INTO person_membership ([person_id], [personstatus], [membership_id], [relationship])
VALUES
    (1, 'A', 10, 1), …
Run Code Online (Sandbox Code Playgroud)

sql-server string-agg

5
推荐指数
1
解决办法
1万
查看次数

SQL Server 2017 STRING_AGG 排序依据

我在 Windows 上使用 SQL Server 2017 Microsoft SQL Server 2017 (RTM-GDR) (KB4583456) - 14.0.2037.2 (X64) 2020 年 11 月 2 日 19:19:59 版权所有 (C) 2017 Microsoft Corporation Developer Edition(64 位) 10 Pro 10.0(内部版本 19042:)。

我正在尝试对 STRING_AGG 函数的结果进行排序。

这很好用

SELECT STRING_AGG(Category,', ') AS Result
FROM LegacyReviews_Categories
Run Code Online (Sandbox Code Playgroud)

这给了我错误“Msg 102,Level 15,State 1,Line 1 '('附近的语法不正确。”

SELECT STRING_AGG(Category,', ') WITHIN GROUP ( ORDER BY Category ASC) AS Result
FROM LegacyReviews_Categories
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2017 string-agg

3
推荐指数
1
解决办法
6541
查看次数

如何使用 STRING_AGG() 获取以逗号分隔的升序字符串

我的桌子看起来像这样

Color  Order 
------------
Red    49
Blue   32
Green  80
Green  30
Blue   93
Blue   77
Red    20
Green  54
Red    59
Red    42
Red    81
Green  35
Blue   91
Run Code Online (Sandbox Code Playgroud)

我的查询是

SELECT Color, Count(*) AS Count, STRING_AGG(Order,',') AS AggOrder
FROM MyTable
GROUP BY Color
Run Code Online (Sandbox Code Playgroud)

当我按颜色分组并聚合时,我得到未排序的订单

像这样的东西

Color  Count  AggOrder
------------------------------
Red    5      49,20,59,42,81
Blue   4      32,93,77,91
Green  4      80,30,54,35
Run Code Online (Sandbox Code Playgroud)

问题:AggOrder 无序 49,20,59,42,81

我想订购

所以最终结果是

Color  Count  AggOrder
------------------------------
Red    5      20,42,49,59,81
Blue   4      32,77,91,93
Green  4      30,35,54,80
Run Code Online (Sandbox Code Playgroud)

我尝试了这个查询

SELECT Color, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server string-aggregation string-agg

1
推荐指数
1
解决办法
2768
查看次数