如何";转置;在SQL中将数据写入列中?
我有一个带有如何";转置;在SQL中将数据写入列中?,sql,pivot,presto,Sql,Pivot,Presto,我有一个带有(id、名称、创建\u时间戳) 我想写一个查询,给出: name, 2019-09-15, 2019-09-16, ... , 2019-10-15 日期列为最近30天的日期 在每一列中,都有与日期匹配的每个名称的记录计数 我知道如何将其创建为行 select name ,cast ( creation_timestamp as DATE) ,count(1) from my_bale group by name, cast ( creation
(id、名称、创建\u时间戳)
我想写一个查询,给出:
name, 2019-09-15, 2019-09-16, ... , 2019-10-15
日期列为最近30天的日期
在每一列中,都有与日期匹配的每个名称的记录计数
我知道如何将其创建为行
select name
,cast ( creation_timestamp as DATE)
,count(1)
from my_bale
group by name, cast ( creation_timestamp as DATE)
但这给了我3列,日期列在第2列。
如何将其转换为所需的输出
假设我的桌子有
id, name , creation_timestamp
1 A 2019-10-10 21:52:22.904
2 A 2019-10-10 22:52:22.904
3 B 2019-10-10 21:52:22.904
3 C 2019-10-11 21:52:22.904
输出应为:
name, 2019-09-15, 2019-09-16, ... , 2019-10-10, 2019-10-11, ..., 2019-10-15
A 0 0 2 0 0
B 0 0 1 0 0
C 0 0 0 1 0
与问题相似,但没有得到任何答案
我使用的是Presto,但是原生SQL解决方案很棒我把你的标题放进了谷歌,不出所料,有很多关于这个主题的文章。首先,请检查:@Jeremy在presto和not with date列中没有。所有示例都是针对静态列的。@Jeremy在链接中注意到日期仅为1列。其他维度是硬编码的。你的例子就是我要问的最简单的例子。你不能用它来得到我想要的。。你需要一个完全不同的方法。因此出现了堆栈溢出的问题。stackoverflow中只有1个类似的解决方案,但这非常特定于MS SQL。presto或标准SQL没有对应的版本