【问题标题】:SQL Server 2000 equivalent of GROUP_CONCAT functionSQL Server 2000 等效的 GROUP_CONCAT 函数
【发布时间】:2013-05-13 03:48:01
【问题描述】:

我尝试在 SQL Server 2000 中使用 GROUP_CONCAT 函数,但它返回错误:

'group_concat' 不是可识别的函数名"

所以我猜想在 SQL Server 2000 中group_concat 还有其他功能吗?你能告诉我它是什么吗?

【问题讨论】:

  • 你的意思是“你的 SQL”中的 mysql,因为那不是那个标签的真正用途。

标签: sql sql-server tsql sql-server-2000 string-aggregation


【解决方案1】:

很遗憾,由于您使用的是 SQL Server 2000,因此您不能使用 FOR XML PATH 将这些值连接在一起。

假设我们有以下示例数据:

CREATE TABLE yourtable ([id] int, [name] varchar(4));

INSERT INTO yourtable ([id], [name])
VALUES (1, 'John'), (1, 'Jim'),
    (2, 'Bob'), (3, 'Jane'), (3, 'Bill'), (4, 'Test'), (4, '');

您可以一起生成列表的一种方法是发送至create a function。一个示例函数是:

CREATE FUNCTION dbo.List 
( 
    @id int
) 
RETURNS VARCHAR(8000) 
AS 
BEGIN 
    DECLARE @r VARCHAR(8000) 
      SELECT @r = ISNULL(@r+', ', '') + name
      FROM dbo.yourtable 
      WHERE id = @id 
        and Name > ''  -- add filter if you think you will have empty strings
    RETURN @r 
END 

那么当你查询数据的时候,你会传入一个值到函数中,将数据拼接成一行:

select distinct id, dbo.list(id) Names
from yourtable;

SQL Fiddle with Demo。这会给你一个结果:

| ID |      NAMES |
-------------------
|  1 |  John, Jim |
|  2 |        Bob |
|  3 | Jane, Bill |
|  4 |       Test |

【讨论】:

  • 您应该为 Name > '' 添加另一个 where 子句条件,这将保护您免受 null 和空字符串的影响,这会使输出错误或很奇怪。
猜你喜欢
  • 2013-10-07
  • 2011-01-14
  • 2016-08-22
  • 2012-02-10
  • 1970-01-01
  • 2012-09-14
  • 2023-04-09
  • 2021-09-14
相关资源
最近更新 更多