Создать столбец на основе другого столбца в каждом случае - PullRequest
0 голосов
/ 28 февраля 2019

input:

| case_no | activity | country |
|---------|----------|---------|
|       1 | a1       | A       |
|       1 | a1       | A       |
|       1 | a1       | B       |
|       2 | a2       | C       |
|       2 | a2       | D       |
|       3 | a3       | E       |
|       3 | a3       | E       |

вывод нового столбца case_countries :

| case_no | activity | country | case_countries |
|---------|----------|---------|----------------|
|       1 | a1       | A       | A,B            |
|       1 | a1       | A       | A,B            |
|       1 | a1       | B       | A,B            |
|       2 | a2       | C       | C,D            |
|       2 | a2       | D       | C,D            |
|       3 | a3       | E       | E              |
|       3 | a3       | E       | E              |

Я хочу создать столбец case_countries сохраняет все страныкаждой деятельности в рамках дела.какие-либо предложения?

пс.я использую Teradata

1 Ответ

0 голосов
/ 28 февраля 2019

Это не действительно ужасно в Teradata, как предложил Тим, но все же более сложное:

SELECT
    t1.case_no,
    t1.activity,
    t1.country,
    t2.case_countries
FROM yourTable  t1
INNER JOIN
 (
   SELECT case_no, activity,
      Trim(Trailing ',' FROM XmlAgg(country||',' ORDER BY country) (VARCHAR(200))) AS case_countries
   FROM 
    (
      SELECT DISTINCT case_no, activity, country
      FROM yourTable
    ) t2
   GROUP BY 1,2 
 ) t2
ON t1.case_no = t2.case_no
AND t1.activity = t2.activity;
...