【问题标题】:Dynamic column naming in NetezzaNetezza 中的动态列命名
【发布时间】:2016-12-07 15:42:15
【问题描述】:

有没有办法在 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

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

【问题讨论】:

    标签: dynamic netezza aginity


    【解决方案1】:

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

    我希望这会有所帮助:)

    拉尔斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2023-01-30
      • 1970-01-01
      • 2015-08-16
      • 2021-06-03
      相关资源
      最近更新 更多