powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом
6 сообщений из 6, страница 1 из 1
Помогите пожалуйста с запросом
    #40045689
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть таблица:

dt user work2021-02-01 Иванов 0.242021-02-02 Иванов 1.662021-02-03 Иванов 4.322021-02-04 Иванов 0.412021-02-01 Петров 6.22021-02-02 Петров 8.662021-02-06 Сидоров 1.22021-02-07 Сидоров 0.662021-02-09 Сидоров 2.54

Нужно получить такой набор данных:
user dataИванов2021-02-01:0.24;2021-02-02:1.66;2021-02-03:4.32;2021-02-04:0.41Петров2021-02-01:6.2;2021-02-02:8.66Сидоров2021-02-06:1.2;2021-02-07:0.66;2021-02-09:2.54

Пробовал с FOR XML PATH, но она склеивает всю таблицу в одну строку.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом
    #40045700
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так:

Код: sql
1.
2.
3.
4.
5.
select [user],
       [data] = (select cast (dt as nvarchar(10)) + ':' + cast (work as nvarchar (5)) + '; ' from wh w where w.[user] = h.[user] FOR XML PATH(''))
  from wh h 
 group by [user]
 order by user



Но что-то мне подсказывает, что можно по другому.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом
    #40045718
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать sql-ф-цию с такой конструкцией:

@result = @result + ',' + MyField...

ее можно будет применять во многих местах.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом
    #40045731
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Написать sql-ф-цию с такой конструкцией:

@result = @result + ',' + MyField...

ее можно будет применять во многих местах.


Спасибо.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом
    #40045832
Sybex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если SQL Server от 2017 и выше, то можно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @T TABLE([dt] date, [user] nvarchar(100), [work] float)

INSERT @T
VALUES ('2021-02-01', 'Иванов', 0.24)
      ,('2021-02-02', 'Иванов', 1.66)
      ,('2021-02-03', 'Иванов', 4.32)
      ,('2021-02-04', 'Иванов', 0.41)
      ,('2021-02-01', 'Петров', 6.2)
      ,('2021-02-02', 'Петров', 8.66)
      ,('2021-02-06', 'Сидоров', 1.2)
      ,('2021-02-07', 'Сидоров', 0.66)
      ,('2021-02-09', 'Сидоров', 2.54)

SELECT [user]
      ,STRING_AGG(CONCAT([dt], N':', [work]), N';') AS [data]
  FROM @T
 GROUP BY [user]
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом
    #40046070
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE @T TABLE([dt] date, [user] nvarchar(100), [work] float)

INSERT @T
VALUES ('2021-02-01', 'Иванов', 0.24)
      ,('2021-02-02', 'Иванов', 1.66)
      ,('2021-02-03', 'Иванов', 4.32)
      ,('2021-02-04', 'Иванов', 0.41)
      ,('2021-02-01', 'Петров', 6.2)
      ,('2021-02-02', 'Петров', 8.66)
      ,('2021-02-06', 'Сидоров', 1.2)
      ,('2021-02-07', 'Сидоров', 0.66)
      ,('2021-02-09', 'Сидоров', 2.54)
	  
Select distinct [user], t.*
	from @T a
	Cross apply (select cast (dt as nvarchar(10)) + ':' + cast (work as nvarchar (5)) + '; ' from @T b where a.[user] = b.[user] Order by dt FOR XML PATH('')) t([data]) 
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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