2016-12-07 51 views
0

有什么方法可以动态地命名Netezza中的pivoted列?在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。其中一个参数是“目标表名称”。其他参数在你的情况:'输入表名','按列组','where子句','组织在'列和'分配在'列。

我希望这有助于:)

拉尔斯