所以,我有一个非常规的问题。我希望能够将具有相同 ID 的行连接成一大行。为了说明我的问题,让我举一个例子。这是查询:
SELECT b.id AS "ID",
       m.content AS "Conversation"
FROM bookings b 
INNER JOIN conversations c on b.id = c.conversable_id AND c.conversable_type = 'Booking'
INNER JOIN messages m on m.conversation_id = c.id
WHERE b.state IS NOT NULL
GROUP BY 1,2
LIMIT 1000;
这是输出:
ID     **Conversation
1223    "blah, blah, blah, blah"
1223    " ... blaaaah, blah.."
1223    "more blaaah"
1223    "last blah"
5000    "new id, with more blah"
5000    "and the blah continues"
有没有一种方法可以将对话行连接成一个聚合行,同时保留 ID?
像这样:
ID     Conversation
1223    "blah, …我正在使用Visual Studio 2015,并且SQL Server数据库项目中的STRING_AGG WITHIN GROUP出现问题。
SELECT [Continent], 
STRING_AGG([Country], ', ') WITHIN GROUP (ORDER BY [Country]) AS CountryList
FROM [Country]
GROUP BY [Continent]
此代码给出错误SQL46010:AS附近的语法不正确。没有
WITHIN GROUP (ORDER BY [Country])
没有问题。
目标平台设置为
Microsoft Azure SQL Database V12
调试目标连接设置为本地SQL Server vNext数据库。
在SQL Server Management Studio中,这段代码可以毫无问题地执行。在SSMS内或从代码中运行存储过程可得到预期的正确结果(每个大洲1行,每个大洲的国家/地区列表按国家/地区分隔的逗号分隔)。
同时,我安装了Visual Studio 2017,希望这样做可以消除错误,但没有运气。
已安装SQL Server数据工具17(内部版本14.0.61704.140)。