powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
4 сообщений из 4, страница 1 из 1
Почему так?
    #1406228
defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DECLARE @t table(id int, [name] nvarchar(20))
INSERT @t VALUES (1, 'Один')
INSERT @t VALUES (2, 'Два')
INSERT @t VALUES (3, 'Три')

DECLARE @s nvarchar(MAX);

SELECT [name] FROM @t ORDER BY id;
SET @s='';
SELECT @s=[name]+' '+@s FROM @t ORDER BY id;
SELECT @s;
name
Один
Два
Три
(Отсутствует имя столбца)
Три Два Один
Порядок не учитывается?
...
Рейтинг: 0 / 0
Почему так?
    #1411556
kDn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
g?oes to sleep
defragmentator  27.07.2019, 14:11
Порядок не учитывается?
Учитывается, ты получил ровно то, что написал. Сам же вперед вставляешь, соотстветственно либо поменяй сортировку на DESC, либо же в конкатинации сцепляемые. А вообще пиши лучше так (посльку можно встравивать в запрос или функции):
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @t table(id int, [name] nvarchar(20))
INSERT @t VALUES (1, N'Один')
INSERT @t VALUES (2, N'Два')
INSERT @t VALUES (3, N'Три')

SELECT STUFF((
  SELECT ' '+t.name
  FROM @t t
  ORDER BY t.[id]
  FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'),1,1,'') tst
...
Дилинь Дилинь Дилинь 798413147632722479082280201[:frown][:grin2]
Рейтинг: 1 / 0
Нравится: defragmentator
Почему так?
    #1429885
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kDn  29.07.2019, 15:28
defragmentator  27.07.2019, 14:11
Порядок не учитывается?
Учитывается, ты получил ровно то, что написал. Сам же вперед вставляешь, соотстветственно либо поменяй сортировку на DESC, либо же в конкатинации сцепляемые. А вообще пиши лучше так (посльку можно встравивать в запрос или функции):
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @t table(id int, [name] nvarchar(20))
INSERT @t VALUES (1, N'Один')
INSERT @t VALUES (2, N'Два')
INSERT @t VALUES (3, N'Три')

SELECT STUFF((
  SELECT ' '+t.name
  FROM @t t
  ORDER BY t.[id]
  FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'),1,1,'') tst
мыкрософт взамен б-гомерзкого STUFF/XML PATH спустя 10 лет после оракла придумало нормальный string_agg
...
Рейтинг: 0 / 0
Почему так?
    #1430285
WildMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kDn  29.07.2019, 15:28
defragmentator  27.07.2019, 14:11
Порядок не учитывается?
Учитывается, ты получил ровно то, что написал. Сам же вперед вставляешь, соотстветственно либо поменяй сортировку на DESC, либо же в конкатинации сцепляемые. А вообще пиши лучше так (посльку можно встравивать в запрос или функции):
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @t table(id int, [name] nvarchar(20))
INSERT @t VALUES (1, N'Один')
INSERT @t VALUES (2, N'Два')
INSERT @t VALUES (3, N'Три')

SELECT STUFF((
  SELECT ' '+t.name
  FROM @t t
  ORDER BY t.[id]
  FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'),1,1,'') tst
Это, кстати, достаточно медленный вариант. Если тебе в запросе надо сгруппировать строки таким образом (не в одну, а по группам). Если уж нет 2017 сиквел с его string_agg, можно на шарпе написать свою конкатенацию строк. Это гораздо быстрее будет работать.
...
Изменено: 05.08.2019, 06:17 - WildMage
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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