【发布时间】:2021-05-30 17:24:59
【问题描述】:
我正在尝试找到一种方法将下表(我猜您会说它是“长”格式)转换为(“更宽”)格式,其中所有列基本上都是明确的布尔值。我希望这个简单的例子能理解我想要做的事情。
注意大约有 74 人。(所以输出表将有 223 列,1 + 74 x 3)
我想不出一个简单的方法来做到这一点,除了可怕地通过像
这样的语句沿着“Town”进行大量左连接... left join(
select
town,
case where person = 'Richard' then 1 else 0 end as "Richard"
Fee as "Richard Fee"
from services
where person = 'Richard'
left join...
能否有聪明人提出一种在 SQL 中使用 PIVOT 函数的方法? 我正在使用 Snowflake(和 dbt,所以如果真的需要循环遍历所有人,我可以让一些 jinja 发挥作用)。
输入:
期望的输出:
ps。我知道这是一个荒谬的 SQL 问题,但这是“客户想要的输出”,所以我有这个不受欢迎的任务要完成。
【问题讨论】:
-
对于真正的“动态”解决方案,您可以使用存储过程Dynamic PIVOTs in SQL with Snowflake by Felipe Hoffa
标签: sql snowflake-cloud-data-platform