실제로이 필드는 큰 긴 문자열 인 '1'이 아닙니다. 여기 내 목표는 C++ 프로그램에서이 데이터를 계층 적 개체로 구문 분석하는 것입니다. 그래서 쿼리를 가능한 한 빨리 실행하면서 객체에 채울 수있는 최소 데이터를 반환해야합니다.어떻게 '이전에 인쇄 된 행부터 값이 변경된 경우에만 인쇄'라고 말합니까?
다음은 상상력으로이 목표를 성취 할 수있는 방법이지만, 진정한 목표를 달성하는 간단한 방법이 있다면 나는 모두 귀입니다.
내가 생각한 다른 것들 : 피벗 테이블을 고려해 보았지만 계층 구조의 각 계층에 5 개의 분기가있는 경우 데이터를 얻을 때까지 피벗 테이블에 3000 개 이상의 열이 있습니다.
은 계층화 된 머리글 필드별로 그룹화하고 이전에 인쇄 된 행과 동일한이 아닌 경우에만 필드를 그룹화하면서 2 개의 필드를 함께 연결 한 다음 listagg하고 싶습니다. 당신이 열을 알고있는 경우
하는input
tier1,tier2,tier3,tier4,tier5,data1,data2
1 1 1 1 1 big tall
1 1 1 1 1 big smelly
1 1 1 1 2 gross tall
1 1 1 2 1 flatulent exceptional
desired output:
1 1 1 1 1 big,tall big,smelly
2 gross,tall
2 1 flatulent,exceptional
는 마지막 인쇄 행 이후 변경된 경우에만 필드를 인쇄
가상의 기능은, 우리가) (미친
select
crazy(tier1),
crazy(tier2),
crazy(tier3),
crazy(tier4),
crazy(tier5),
listagg(data1||data2, ' ') within group(?)
from table
group by tier1,tier2,tier3,tier4,tier5