Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 76
1

Сборка данных по признаку

27.03.2013, 00:13. Показов 410. Ответов 2
Метки нет (Все метки)

Всем привет.
Просьба помочь, а то уже мозг вскипел

Есть таблица с данными, пример:

GoodIdSNameSertIdSertDateSertLTSertHolderIdSertCenterId
35696002110113956414126.11.201201.12.2015260084131194889
35696002163510113945451513.06.201201.04.2014980072134490194
290603803358601123579397528.02.201201.01.20151836024227071501
290603803348651123703063129.05.201201.04.20151836024227071501
208431892A3024067684528.09.201201.07.2015314224067663



Необходимо сделать сборку значений всех столбцов по столбцу GoodId, т.е.:

GoodIdSNameSertIdSertDateSertLTSertHolderIdSertCenterId
3569600211011;1635101139564141;3945451526.11.2012;13.06.201201.12.2015;01.04.201426008413;98007211194889;34490194
29060380335860112;33486511235793975;3703063128.02.2012;29.05.201201.01.2015;01.04.201518360242;1836024227071501;27071501
208431892A3024067684528.09.201201.07.2015314224067663

Есть идея применить STUFF и FOR XML PATH, но как это уложить так чтобы все соответствовало очередности строк таблицы.
Допустим делаю так:
SQL
1
2
3
SELECT
stuff ((SELECT  DISTINCT '; ' +ser.SName)
FROM @ser ser FOR xml path ('')),1,0,'') AS allseries
тут все нормально, но дальше- не въеду как. Если буду продолжать так же, то пойдет вразнобой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2013, 00:13
Ответы с готовыми решениями:

Группировка данных в форме по признаку
Добрый день! Подскажите пожалуйста, существует ли возможность группировки данных в форме, созданной...

Запрет редактирования данных в форме по признаку
Добрый день, подскажите как можно запретить редактирование данных в ворме по признаку? Например...

Сбор данных из разных таблиц по признаку зелёного цвета выделения
Стоит задача собрать единоразового данные из таблиц excel, они выделены зелёным цветом в этих...

Получение агрегированных данных с группировкой по какому-либо признаку из одной таблицы
Собственно вопрос в заголовке. Я не понимаю как запихнуть в такой запрос группировку. PS: База...

__________________
2
1311 / 943 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
27.03.2013, 01:02 2
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;with 
myTable as (select * from(values
   ('35696002','11011','39564141','26.11.2012','01.12.2015','26008413','1194889'),
   ('35696002','16351011','39454515','13.06.2012','01.04.2014','9800721','34490194'),
   ('29060380','335860112','35793975','28.02.2012','01.01.2015','18360242','27071501'),
   ('29060380','334865112','37030631','29.05.2012','01.04.2015','18360242','27071501'),
   ('20843189','2A302','40676845','28.09.2012','01.07.2015','3142','24067663')
   )t(GoodId,SName,SertId,SertDate,SertLT,SertHolderId,SertCenterId)),
renum as(
   select 
      row_number()over(partition by GoodId order by SName)rn,
      *
   from myTable
   ),
recurs as (
   select 1 rn, n.GoodId,CONVERT(varchar,n.SName)SName,CONVERT(varchar,n.SertId)SertId,
      CONVERT(varchar,n.SertDate)SertDate,CONVERT(varchar,n.SertLT)SertLT,
      CONVERT(varchar,n.SertHolderId)SertHolderId,CONVERT(varchar,n.SertCenterId)SertCenterId
      from renum n where rn=1
   union all
   select r.rn+1,r.GoodId,CONVERT(varchar,r.SName+';'+n.SName),CONVERT(varchar,r.SertId+';'+n.SertId),
      CONVERT(varchar,r.SertDate+';'+n.SertDate),CONVERT(varchar,r.SertLT+';'+n.SertLT),
      CONVERT(varchar,r.SertHolderId+';'+n.SertHolderId),CONVERT(varchar,r.SertCenterId+';'+n.SertCenterId)
      from recurs r
      join renum n on n.GoodId=r.GoodId and n.rn=r.rn+1
   )
select top (1) with ties * 
from recurs
order by row_number()over(partition by GoodId order by rn desc)
rnGoodIdSNameSertIdSertDateSertLTSertHolderIdSertCenterId
1208431892A3024067684528.09.201201.07.2015314224067663
229060380334865112;33586011237030631;3579397529.05.2012;28.02.201201.04.2015;01.01.201518360242;1836024227071501;27071501
23569600211011;1635101139564141;3945451526.11.2012;13.06.201201.12.2015;01.04.201426008413;98007211194889;34490194
1
0 / 0 / 0
Регистрация: 16.10.2010
Сообщений: 76
27.03.2013, 17:11  [ТС] 3
О!
cygapb-007, спасибо большое. Я думал что я более-менее знаю сиквел, оказалось- фигу )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2013, 17:11

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Написать КФ FIND_FD.BAT для поиска информации в файле данных по заданному признаку
ЗАДАНИЕ: Написать КФ FIND_FD.BAT для поиска информации в файле данных по заданному признаку: ...

Сборка и копирование данных с RaidZ
Здравствуйте. Может кто сталкивался с такой проблемой. Есть 6 дисков с сервера. Из дисков был...

Сборка данных из разных файлов с трапонированием
Добрый день! В vba не силен((, поэтому использовал готовое решение для сборки данных из разных...

Сборка для импорта данных с GoogleDocs в SQL server
Добрый день Задача - заливать данные с GoogleDocs в таблицу SQL Server Для этого решено было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.