SQL внутреннее объединение и группировка по, чтобы получить значения через запятую - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующие три таблицы, из которых я хотел бы получить конкретный c результат

TableA

key1    key2
-------------
121     4
131     4
141     5
151     3
161     3
171     6
181     6
191     6
...     ...

TableB:

key1    key3
-------------
121     1001
131     1111
141     1111
151     1222
161     1222
171     1234
181     1001
191     1111
...     ...

Table C:

key3    key4
-------------
1001    "aa"
1111    "gg"
1222    "hh"
1234    "jj"
...     ...

Я хочу, чтобы запрос SQL (который мог бы использовать внутреннее объединение) дал мне следующий результат:

key2    key4
-------------------------
3       "hh"
4       "aa", "gg"
5       "gg"
6       "aa", "gg", "jj"

Microsoft SQL Server 2012

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

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

select t1.key2, string_agg(t3.key4, ',') key4
from table1 t1
inner join table2 t2 on t2.key1 = t1.key1
inner join table3 t3 on t3.key3 = t1.key3
group by t1.key2
0 голосов
/ 24 марта 2020

Пожалуйста, попробуйте с ниже SQL запрос:

SELECT key2, string_agg(key4, ",")
FROM TableA JOIN TableB USING (key1) JOIN TableC USING (key3)
GROUP BY key2
...