标签: string-aggregation

将 oracle 的 listagg 转换为 postgres

我正在尝试将一些 Oracle 查询转换为 Postgres 并遇到listagg.

甲骨文代码

select max(eta) eta, mso_id, listagg(carrier_name, ',') 
within group (order by eta) as carrier 
from tb_flight_schedule group by mso_id;
Run Code Online (Sandbox Code Playgroud)

我发现 Postgres 的等价物listaggisstring_agg并继续listaggstring_agg. 但是,我遇到了错误(错误:函数 string_agg(字符变化,未知,日期)不存在)。我在查询中遗漏了什么吗?Postgres 查询如下:

select max(eta) eta, mso_id, string_agg(carrier_name, ',') 
WITHIN GROUP (ORDER BY eta) as carrier 
from tb_flight_schedule group by mso_id;
Run Code Online (Sandbox Code Playgroud)

sql oracle postgresql syntax-error string-aggregation

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

SQL SERVER 2017中对应的GROUP_CONCAT()

我想将以下 MYSQL 查询转换为 MS SQL Server。但是,我确定GROUP_CONCAT2017 年之前的 MS SQL Server 中不存在该函数。SQL SERVER 2017 中有一个函数。有人可以帮助我吗?

SELECT region, GROUP_CONCAT(route_name) AS route_name 
FROM route_details 
LEFT JOIN ride_details ON route_id = r_id 
WHERE region != '' AND service_date = '2019-09-02' 
GROUP BY region
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server string string-aggregation

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

将多行转换为一行 - SQL

我正在尝试将“测试”列放在同一行中。Stuff()但是,我正在使用,似乎“测试”列正在遍历所有 qID 我缺少什么?

SELECT DISTINCT qID,
                STUFF((
                select ',' + B.text
                from tbl B
                where B.qID=qID
                order by B.text
                for xml path('')
                ),1,1,'') as test
FROM tbl 
WHERE qID in (2258060,2296222)
GROUP BY qID
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

sql t-sql sql-server string-aggregation

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

SQL Server 将特定列值转换为逗号分隔的字符串

我在数据库中有一个表,如下所示:

Id  Name
1   Item1
1   Item2
2   Item3
1   Item4
3   Item5
Run Code Online (Sandbox Code Playgroud)

我需要如下输出(第三列是计数):

1   Item1,Item2,Item4   3
2   Item3               1
3   Item5               1
Run Code Online (Sandbox Code Playgroud)

它是如何通过 SQL Query 实现的?

sql sql-server string-aggregation

0
推荐指数
2
解决办法
9392
查看次数