У меня есть 2 таблицы Contracts
и Locations
.
Contracts
столбцы: CTX_ID, Parent_CTX_ID, Company_name
Locations
столбцы: CTX_ID, State
Я пытаюсь создать выход, который объединяет СОСТОЯНИЕ в один столбец для каждого Parent_CTX_ID
.
Таблица контрактов:
CTX_ID | Parent_CTX_ID | Company_Name
-------+---------------+-------------
1 | 100 | ABC
2 | 100 | ABC
3 | 100 | ABC
4 | 200 | DEF
5 | 200 | DEF
6 | 200 | DEF
Таблица местоположений:
CTX_ID | State
-------+------
1 | NJ
2 | PA
3 | DE
4 | NJ
5 | TX
6 | CA
Выход, который я пытаюсь получить:
CTX_ID | Parent_CTX_ID | Company_Name | State | States
-------+---------------+--------------+-------+-----------
1 | 100 | ABC | NJ | NJ,PA,DE
2 | 100 | ABC | PA | NJ,PA,DE
3 | 100 | ABC | DE | NJ,PA,DE
4 | 200 | DEF | NJ | NJ,TX,CA
5 | 200 | DEF | TX | NJ,TX,CA
6 | 200 | DEF | CA | NJ,TX,CA
Текущий код:
(SELECT DISTINCT
c.parent_ctx_id,
STUFF((SELECT DISTINCT ',' + s.state
FROM Locations s
FOR XML PATH('')), 1, 1, '') as STATES
FROM
Contracts AS c
INNER JOIN
Locations AS s ON s.ctx_id = c.ctx_id)
Текущий выход:
Parent_CTX_ID | States
--------------+---------------
100 | CA,DE,NJ,PA,TX
200 | CA,DE,NJ,PA,TX