2016-12-07 3 views
0

Есть ли способ динамически назвать поворотные столбцы в Netezza? В SSMS я бы использовал хранимую процедуру, но наш новый ящик Netezza ограничивает создание SP. Используя операторы CASE, я могу использовать номер строки для поворота ежедневных сумм по месяцам, но я бы хотел, чтобы имена новых столбцов были фактическим произвольным MONTHID, а не номерами строк (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's, который хранит (постоянную) таблицу на основе набора аргументов. Одним из таких аргументов является «имя целевой таблицы». Другие аргументы в вашем случае: «имя входной таблицы», «группа по столбцам», «предложение where», столбцы «организовать» и столбцы «распространять».

Я надеюсь, что это помогает :)

Ларс

Смежные вопросы