0

我没有从 Snowflake 文档中获得关于如何使用雪花函数给出列名的太多帮助。

我有自动报告,它将为给定的日期进行计算。这里是

select
  sum(case when logdate = to_date(dateadd('day', - 10, '2019-11-14')) then eng_fees + data_fees end) AS to_date(dateadd('day', - 10, '2019-11-14'))
from myTable
where logdate = '2019-11-04'

我在下面的列名中得到以下输出

to_date(dateadd('day', - 10, '2019-11-14'))
100

我的列名的预期输出

2019-11-04
100

如何在 Snowflake 中将预期日期打印为列名?

4

3 回答 3

0

我看到两条接近你想要的路径:

1)您可以简单地使用 UNION 将标题显示为第一行并将实际的列别名更改为 1....N - 这样它们就可以提供列数 - 这将是最快和最便宜的

2)您可以使用动态 SQL 生成一个查询,该查询将动态填充您的别名,然后简单地运行它(您可以使用示例 PIVOT 来构造此类查询)

于 2019-11-15T18:11:27.077 回答
0

TASK如果不使用外部功能(或调度),您将无法拥有动态列名。

您可以创建一个 JavaScript 存储过程,该过程生成一个VIEW列名可以通过动态参数/表达式设置的位置。

处理此问题的常规方法是使用报告工具,该工具可以显示带有动态标题的固定列结果集或完全运行动态 SQL。

于 2019-11-15T09:39:07.757 回答
0

您的声明使用 AS 来命名您的列。Snowflake 会将其视为文字,而不是计算。我认为,为了执行您在函数中请求的操作,您需要使用 Javascript 函数。这将允许您使用预定义的计算列名称动态构建 SQL 语句。

https://docs.snowflake.net/manuals/sql-reference/udf-js.html

于 2019-11-15T01:15:29.500 回答