2016-12-07 1 views
0

Netezza에서 피벗 팅 된 열의 이름을 동적으로 지정할 수 있습니까? SSMS에서는 저장 프로 시저를 사용 하겠지만 새로운 Netezza 상자는 SP 생성을 제한합니다. CASE 문을 사용하면 행 번호를 사용하여 월별 일일 총계를 피벗 할 수 있지만 새 열 이름은 행 번호가 아니라 실제 임의의 MONTH가되도록하고 싶습니다 (MONTH_ID1에는 ROW_NUMBER 1-12와 해당 MONTHID 포함). 예를 들어, 전략적으로 배치 된 인용문과 하위 쿼리를 생각하고 있습니다.하지만 작동시킬 수는 없습니다.Netezza에서 동적 열 이름 지정

select "DAY" 
,sum(case when "ROW_NUMBER" = 1 then SUMOFCHGS else null end) as "1" 
,sum(case when "ROW_NUMBER" = 2 then SUMOFCHGS else null end) as "2" 
,sum(case when "ROW_NUMBER" = 3 then SUMOFCHGS else null end) as "3" 
,sum(case when "ROW_NUMBER" = 4 then SUMOFCHGS else null end) as "4" 
,sum(case when "ROW_NUMBER" = 5 then SUMOFCHGS else null end) as "5" 
,sum(case when "ROW_NUMBER" = 6 then SUMOFCHGS else null end) as "6" 
,sum(case when "ROW_NUMBER" = 7 then SUMOFCHGS else null end) as "7" 
,sum(case when "ROW_NUMBER" = 8 then SUMOFCHGS else null end) as "8" 
,sum(case when "ROW_NUMBER" = 9 then SUMOFCHGS else null end) as "9" 
,sum(case when "ROW_NUMBER" = 10 then SUMOFCHGS else null end) as "10" 
,sum(case when "ROW_NUMBER" = 11 then SUMOFCHGS else null end) as "11" 
,sum(case when "ROW_NUMBER" = 12 then SUMOFCHGS else null end) as "12" 
FROM DLYAMTS D 
    JOIN MONTH_ID1 M ON D.MONTHID = M.MONTHID 
GROUP BY 1 
ORDER BY 1 

내가 열 변수 번호와 미래에이 일을 상상할 수 있지만, 난 그냥 지금 개월 열의 년의 가치를 찾고 있어요.

답변

1

'테이블 개체'를 반환하는 SP를 만들려면 동일한 이해가 있어야합니다. 불가능합니다. 우리 가게에서는 인수 세트를 기반으로 (영구) 테이블을 만드는 sp를 만들었습니다. 이러한 인수 중 하나는 '목표 테이블 이름'입니다. '입력 테이블 이름', '그룹 별 열', 'where 절', 'on organize on'열 및 'distribute on'열과 같은 다른 인수가 사용자의 경우에 사용됩니다.

나는이 도움이 :)

라스

희망