Группировать столбцы SQL-запроса в массив - PullRequest
0 голосов
/ 08 мая 2019

У меня следующий SQL запрос:

SELECT Date AS timestamps, Seasons1 AS seasons_1, Seasons2 AS seasons_2,
    Seasons3 AS seasons_3, Seasons4 AS seasons_4, Seasons5 AS seasons_5,
    Seasons6 AS seasons_6, Seasons7 AS seasons_7
FROM SeasonsTable WITH(NOLOCK)
ORDER BY timestamps DESC

Есть ли способ вернуть один столбец (называемый скажем seasons), который содержит все seasons_*как массив?

Например, в настоящее время это возвращает:

timestamps seasons_1 ... seasons_7
2019-04-28 1.0  2.0  3.0  4.0  5.0  6.0  7.0

, но я бы хотел, чтобы оно вернуло:

timestamps seasons
2019-04-28 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Как уже упоминалось в комментариях, TSQL не имеет массивов.Чтобы вернуть данные в виде строки с разделителями, вам просто нужно объединить столбцы:

SELECT Date AS timestamps, Seasons1 + ',' + Seasons2 + ',' + Seasons3 + ',' + Seasons4 + ',' + Seasons5 + ',' +  Seasons6 + ',' + Seasons7 AS season
FROM SeasonsTable WITH(NOLOCK)
ORDER BY timestamps DESC

В зависимости от типа данных ваших столбцов сезонов, вам может потребоваться использовать приведение (seasonsX как varchar), а не только имя столбца.

1 голос
/ 08 мая 2019
select Date as timestamps, '[' + cast(Seasons1 as nvarchar) + ',' + cast(Seasons2 as nvarchar) + ... + ']' as seasons
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...