0

有没有办法在 Netezza 中动态命名旋转列?在 SSMS 中,我会使用存储过程,但我们的新 Netezza 框限制了 SP 的创建。使用 CASE 语句,我可以使用行号按月旋转每日总和,但我希望新列名是实际的任意 MONTHID 而不是行号(MONTH_ID1 包含 ROW_NUMBER 1-12 和相应的 MONTHID)。例如,我正在考虑战略性地放置引文和子查询——但我无法让它发挥作用。

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

我可以设想将来使用可变数量的列来执行此操作,但我现在只是在寻找一年的月份列。

4

1 回答 1

1

如果您希望创建一个返回“表对象”的 sp,我有同样的理解:不可能。然而,在我们的商店中,我们创建了基于一组参数创建(永久)表的 sp。这些参数之一是“目标表名”。您的案例中的其他参数:“输入表名”、“按列分组”、“where 子句”、“组织在”列和“分布在”列。

我希望这有帮助 :)

拉斯

于 2016-12-08T06:18:09.697 回答