STRING_AGGsqlsever报错
时间: 2024-09-19 15:15:00 浏览: 32
`STRING_AGG`是SQL Server 2016及更高版本引入的一个聚合函数,它允许你将一组值连接成一个字符串,通常在`GROUP BY`语句后使用。如果在较早版本的SQL Server(如SQL Server 2012或更早)上遇到错误,因为该功能未被支持。
如果你遇到`STRING_AGG`函数报错,可以尝试以下替代方法:
1. 使用`REPLACE(CAST(',' + value AS VARCHAR(MAX)), ',', '')`加上`GROUP_CONCAT`函数:
```sql
SELECT parent_item_code,
REPLACE(CAST(
GROUP_CONCAT(item_code ORDER BY item_code SEPARATOR ',')
AS VARCHAR(MAX)), ',', '') AS AllItemCodes,
REPLACE(CAST(
GROUP_CONCAT(item_name ORDER BY item_name SEPARATOR ',')
AS VARCHAR(MAX)), ',', '') AS AllItemNames
FROM your_table
GROUP BY parent_item_code;
```
其中`your_table`应替换为实际表名。
2. 使用窗口函数`STRING_SPLIT`(在某些新版本的SQL Server中可用):
```sql
SELECT parent_item_code,
STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS AllItemCodes,
STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS AllItemNames
FROM (
SELECT parent_item_code, item_code AS value
FROM your_table
UNION ALL
SELECT parent_item_code, item_name AS value
) subquery
GROUP BY parent_item_code;
```
记得检查你的数据库版本以及兼容性的限制。
阅读全文