Snowflake - 如何使用函数显示列名?

Snowflake - how to display column name using function?

我没有从 Snowflake 文档中获得太多关于如何使用 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 中将预期日期打印为列名?

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

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

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

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

处理此问题的正常方法是使用报告工具,该工具可以同时显示动态 headers 或 运行 动态 SQL 的固定列结果集。

我看到有 2 条接近您想要的路径:

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

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