经典分组 ASP

Grouping in classic ASP

我有一份 mssqltable 的毕业生名单,续签了几年。我的任务是按毕业 ID 列出它们,并且它们的更新年份用逗号分隔,而不是每行一个。有些用户有多达 8 次续订。 它们是这样列出的:

Lisa Jones 123456 2001 CMC
Lisa Jones 123456 2002 CMC
Lisa Jones 123456 2003 CMC

最后我想看:

Lisa Jones 123456 2001, 2002, 2003 CMC

有什么方法可以使用 sql 查询或 asp 函数来实现吗??我有超过 2300 条记录,其中 Grad ID 是唯一的 (123456),但续订日期不同。按毕业编号分组,计数为 275。

我会在 SQL 自己做这个。在 SQL Server 2008+.

中使用 STUFF 函数非常简单

我使用 table 变量模拟了一个示例。您可以将 table 变量的用法替换为您真正的 table 命名的 hubspot(将 @hubspot 替换为 hubspot)。

示例设置(只需要 运行 完整示例):

declare @hubspot table
(
    name varchar(100),
    grad_id int,
    renewal_year varchar(10),
    certification_type varchar(10)
)

insert into @hubspot values ('Lisa Jones', 123456, 2001, 'CMC')
insert into @hubspot values ('Lisa Jones', 123456, 2002, 'CMC')
insert into @hubspot values ('Lisa Jones', 123456, 2003, 'CMC')
insert into @hubspot values ('Lisa Jones', 123456, 2004, 'CMC')

在您的 table hubspot 上使用此 SQL:

  select name
       , grad_id
       , STUFF((select ', ' + renewal_year
                  from @hubspot b 
                 where b.grad_id = a.grad_id
                 for xml path('')), 1, 2, '') as renewal_years
       , certification_type
    from @hubspot a
group by name
       , grad_id
       , certification_type

输出:

关于 STUFF 函数的文档:

https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-2017