经典分组 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
我有一份 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