Количество выходов в виде значений - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в SQL и хотел бы достичь следующего ...

Ввод:

-------------------------
Name  | Surname  | Age
-------------------------
Name1 | Surname1 | Age1a
Name1 | Surname1 | Age1b
Name2 | Surname2 | Age2a
Name2 | Surname2 | Age2b

Выход:

-------------------------------
Name  | Surname  | PossibleAges
-------------------------------
Name1 | Surname1 | Age1a, Age1b
Name2 | Surname2 | Age2a, Age2b

I думаю, что это обязательно должно быть по имени и фамилии GROUP BY, но я понятия не имею, как создать столбец PossibleAges.

1 Ответ

2 голосов
/ 07 мая 2020

Вы можете использовать string_agg () :

select name, surname, 
       string_agg(PossibleAges, ', ') within group (order by PossibleAges) as PossibleAges
from table t
group by name, surname;

Для более старой версии вы можете использовать xml подход:

select name, surname,
       stuff(( select concat(', ', t1.PossibleAges)
               from table t1
               where t1.name = t.name and t1.surname = t.surname
               for xml path('')
             ), 1, 1, ''
            ) as PossibleAges
from (select distinct name, surname from table t) t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...