UDF를 사용하지 않고 이러한 작업을 수행하려면 재귀 쿼리를 사용해야합니다. 나는 당신에게 기술을 집계하는 쿼리를 제공하여 최종 결과를 얻는 비슷한 접근법을 사용합니다.
CREATE Volatile Table TempTable1
as
(
SELECT
team
,substr(person,0,Index(trim(person),'(')) as name
,substr(person,Index(person,'(')+1,3) as skill
,Row_Number() Over(Partition by team,name order by skill) as rnk
from
MainTable)
WITH DATA
Primary Index(team,name)
ON COMMIT Preserve Rows;
CREATE VOLATILE TABLE temp_table2 (team,name)
as
(WITH RECURSIVE temp_table3 (team,name,skill,rnk,lev)
AS
(
SELECT team,name,cast(skill as varchar(1000)),rnk,1 as lev
from TempTable1
where rnk = 1
UNION ALL
SELECT t1.team,t1.name,t1.skill||','||t2.skill,t1.rnk,t2.lev+1
FROM
TempTable1 t1
Inner join
temp_table3 t2
on t1.team = t2.team
AND t1.name = t2.name
AND t1.rnk = t2.rnk + 1
)
SELECT team,name||'('||skill||')' as new_name
from temp_table3
qualify rank() over (partition by team,name order by lev desc) = 1)
WITH DATA
ON COMMIT PRESERVE ROWS;
스킬과 사람 이름을 별도의 열로 사용할 수 있습니까? – emaillenin
. 모든 이름은 4 자이고 모든 스킬은 3 자이기 때문에 'substring (person, 1,4)'과'substring (person (6,8)' –
다음과 같은 두 개의 새로운 컬럼을 생성 할 수 있습니다. 이것은 http://stackoverflow.com/questions/23021930/how- to-group-substrings-in-teradata-14 같은 회사에서 비정규 화 된 데이터로 같은 문제를 해결하려고 노력하고 있습니까? – dnoeth