Группировка в классическом ASP - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть список выпускников в таблице mssql с несколькими годами продлений.Мне было поручено перечислить их по номеру градиента и по годам их обновления, разделенным запятыми вместо одного в каждой строке.Некоторые пользователи имеют до 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 уникален (123456), но даты обновления отличаются.Сгруппированный по идентификатору града счет будет 275.

1 Ответ

0 голосов
/ 28 декабря 2018

Я бы сам сделал это на SQL.Довольно просто с помощью функции STUFF в SQL Server 2008 +.

Я смоделировал пример с использованием табличной переменной.Вы должны поменять местами использование переменной таблицы для вашей реальной таблицы с именем 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')

Используйте этот SQL в вашей таблице hubspot:

  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

Вывод:

enter image description here

Документация по функции STUFF:

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

...