powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение ячеек из одного столбца в строку
20 сообщений из 20, страница 1 из 1
Объединение ячеек из одного столбца в строку
    #37693021
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица:
NAME TYPEA одинA дваA триS пятьS триD четыре

каким запросом ее можно превратить в такую? количество NAME больше 300
NAME TYPEA один. два. триS три. пятьD четыре
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693028
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693087
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дедушка, спасибо
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693106
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
только как поступить если у меня поле type имеет 600 разных значений? все прописывать в INSERT?
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693111
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pooleetвсе прописывать в INSERT?
INSERT моделирует вашу таблицу
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693369
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t table(Id int, NAME nvarchar(1),	[TYPE] nvarchar(100))

insert into @t(id, Name, [Type])
select 1, 'A',	'один'
union
select 2, 'A',	'два'
union
select 3, 'A',	'три'
union
select 4, 'S', 'пять'
union
select 5, 'S',	'три'
union
select 6, 'D',	'четыре'



select NAME, (select cast([TYPE] as nvarchar)+ ',' as 'data()' from @t t2 where t1.NAME=t2.NAME order by id for xml path('') )
from @t t1
group by NAME
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693407
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @t table(Id int, NAME nvarchar(1),	[TYPE] nvarchar(100))

insert into @t(id, Name, [Type])
select 1, 'A',	'один'
union
select 2, 'A',	'два'
union
select 3, 'A',	'три'
union
select 4, 'S', 'пять'
union
select 5, 'S',	'три'
union
select 6, 'D',	'четыре'



select NAME, (select cast([TYPE] as nvarchar)+ ',' as 'data()' from @t t2 where t1.NAME=t2.NAME order by id for xml path('') )
from @t t1
group by NAME

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select t1.[Name],
 stuff
 (
  (
   select N','+t2.[Type]
   from @t t2
   where t1.[Name]=t2.[Name]
   order by t2.id
   for xml path('')
  ,type
  ).value('.','nvarchar(max)'),
  1,1,''
 )
from @t t1
group by t1.[Name];
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693416
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

а чем мой вариант плох? кроме того, что остается лишняя запятая?
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693441
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_iap,

а чем мой вариант плох? кроме того, что остается лишняя запятая?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare @t table(id int, Name nvarchar(1),	[Type] nvarchar(100))

insert into @t(id, Name, [Type])
select 1, 'A',	'<один>'
union
select 2, 'A',	'<два>'
union
select 3, 'A',	'<три>'
union
select 4, 'S', '<пять>'
union
select 5, 'S',	'<три>'
union
select 6, 'D',	'<четыре>'

select Name, (select cast([Type] as nvarchar)+ ',' as 'data()' from @t t2 where t1.Name=t2.Name order by id for xml path('') )
from @t t1
group by Name

Это если закрыть глаза на возмутительное использование букв разного регистра в одних и тех же именах.
Большую часть времени мне, например, пришлось причёсывать это чудо.

Я вот не понимаю, с какой целью хаотично используются буквы разного регистра?
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693513
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
буквы только для примера что бы не перегружать информацией


punkt sernr ARKTXФСК ПС Демьянская 25009 ТРАНСФОРМАТОР АОДЦТН-167000/500ФСК ПС Демьянская 25003 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25004 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25005 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25006 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25007 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25008 Трансформатор АОДЦТН-167000/500/220ФСК ПС Демьянская 25001 Трансформатор АТДЦТН-200000/220ФСК ПС Демьянская 25002 Трансформатор АТДЦТН-200000/220ФСК ПС Демьянская Трансформатор ТРДН-25000/110ФСК ПС Демьянская Трансформатор ТРДН-25000/110



punkt sernr ARKTXФСК ПС Демьянская 25003. 25004. 25005. 25006. 25007. 25008 ТРАНСФОРМАТОР АОДЦТН-167000/500ФСК ПС Демьянская 25001. 25002 Трансформатор АТДЦТН-200000/220
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693550
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pooleet,

если Вы про буквы отозвались на мои слова, то это я не Вам
_ч_ в своем скрипте использовал имена одних и тех же полей,
написанные то в верхнем, то в нижнем регистре.
А у меня COLLATE базы регистрозависимый!

Что касается Вашего примера, то чем Вас наши ответы не устраивают?
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693576
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapЯ вот не понимаю, с какой целью хаотично используются буквы разного регистра?

С той целью, что я обычно копирую названия полей из первого поста (там они как раз большими буквами), а далее делаю так, как принято в нашей корпоративной бд (имена колонок начинаются с заглавной буквы, далее все с маленькой). Просто привычка, не более того.
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693577
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapА у меня COLLATE базы регистрозависимый!


Извиняйте, не хотел
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693579
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ответы замечательные
выбрала вот этот:

iap
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select t1.[Name],
 stuff
 (
  (
   select N','+t2.[Type]
   from @t t2
   where t1.[Name]=t2.[Name]
   order by t2.id
   for xml path('')
  ,type
  ).value('.','nvarchar(max)'),
  1,1,''
 )
from @t t1
group by t1.[Name]
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693583
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pooleet, хм... че-то напоминают мне исходные данные))).
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37693657
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять sql-ex что ли?
А примут там for xml path('')-то?
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37694269
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapОпять sql-ex что ли?
А примут там for xml path('')-то?
Да нет, я не о том))). Увидел табличку вида:
pooleetpunkt sernr ARKTXФСК ПС Демьянская 25009 ТРАНСФОРМАТОР АОДЦТН-167000/500ФСК ПС Демьянская 25003 Трансформатор АОДЦТН-167000/500/220
и полез искать кто жеж ТС и чем занимается. Но в итоге все равно выяснелось, что я ее не знаю. Но эти трансформаторы знаю ооооочень хорошо.
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #37694672
pooleet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь вот что у меня получилось. выводит последнюю таблицу из сообщения 12203448

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 select a1.NAME,
 (stuff
 (
  (
   select N','+t1.[TYPE]
   from ZREPPROG t1 left join VBAP t2 on t1.VBELN=t2.VBELN and a2.TRANS=t2.TRANS
   where a1.[NAME]=t1.[NAME] and t1.[TYPE] in 
							(
							select distinct z1.TYPE
							from ZREPPROG z1 left join VBAP z2 on z1.VBELN=z2.VBELN
							where  t1.[TYPE]=z1.TYPE and t2.TRANS=z2.TRANS
							) 
	order by t1.NAME
	
    for xml path('')
  ,type
  ).value('.','nvarchar(max)'),
  1,1,''
 )) as TYPE , a2.TRANS
from ZREPPROG a1 left join VBAP a2 on a1.VBELN=a2.VBELN
group by a1.[NAME], a2.TRANS
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Объединение ячеек из одного столбца в строку
    #39919766
direget
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pooleet
Ответы замечательные
выбрала вот этот:

iap
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select t1.[Name],
 stuff
 (
  (
   select N','+t2.[Type]
   from @t t2
   where t1.[Name]=t2.[Name]
   order by t2.id
   for xml path('')
  ,type
  ).value('.','nvarchar(max)'),
  1,1,''
 )
from @t t1
group by t1.[Name]




Огромное спасибо за помощь! Забрал!
...
Рейтинг: 0 / 0
Объединение ячеек из одного столбца в строку
    #39919786
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
direget
pooleet
Ответы замечательные
выбрала вот этот:

пропущено...



Огромное спасибо за помощь! Забрал!
Не прошло и восьми лет!
Начиная с SQL 2017 появилась функция STRING_AGG
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение ячеек из одного столбца в строку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]