首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL: Presto中的交叉表等效项

SQL: Presto中的交叉表等效项
EN

Stack Overflow用户
提问于 2019-10-12 04:00:33
回答 1查看 405关注 0票数 0

我有一张表,看起来像这样:

代码语言:javascript
复制
shop    number  work    station accept  create  no.of entries
1   123 Maintain    Arrive  2019-10-11 0:00:00  2019-10-11 0:00:00  1
1   123 Maintain    WorkA   2019-10-11 0:00:00  2019-10-11 0:00:00  1
1   123 Maintain    WorkB   2019-10-11 0:00:00  2019-10-11 0:00:00  1
1   1234    Job Arrive  2019-10-11 0:00:00  2019-10-11 0:00:00  1
1   1234    Job WorkC   2019-10-11 0:00:00  2019-10-11 0:00:00  1
1   1234    Job WorkD   2019-10-11 0:00:00  2019-10-11 0:00:00  1

我想让它看起来像这样:

代码语言:javascript
复制
shop    number  work    arrival_accept  arrival_create  worka_accept    worka_create    workb_accept    workb_create    workc_accept    workc_create    workd_accept    workd_create    no.of entries
1   123 Maintain    2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00                  1
1   1234    Job 2019-10-11 0:00:00                      2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00  2019-10-11 0:00:00  1

我知道在postgres中我们可以使用交叉表来实现这一点。然而,我不能用Presto做到这一点。有没有办法让我这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-12 04:03:40

您可以使用条件聚合。如果你知道所有的电台,看起来是这样的:

代码语言:javascript
复制
select shop, number, work,
       max(case when station = 'Arrive' then accept end) as arrive_accept,
       max(case when station = 'Arrive' then create end) as arrive_create,
       max(case when station = 'WorkA' then accept end) as workA_accept,
       max(case when station = 'WorkA' then create end) as workA_create,
       . . .  -- and so on for the rest of the stations
from t
group by shop, number, work;

否则,您将需要动态构造查询来做几乎相同的事情,但是使用可变数量的列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58347770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档