首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当在单元中使用wm_concat时,如何用0填充不存在的值?

当在单元中使用wm_concat时,如何用0填充不存在的值?
EN

Stack Overflow用户
提问于 2015-02-02 08:28:43
回答 1查看 232关注 0票数 0

我有一张按pt分隔的桌子。数据:

100 1 20150101 101 1 20150102 100 1 20150103

我想使用wm_concat来获得这样的结果,其中在填充0的分区中不存在k:

100,1,1 101 0,1,0

但我只能得到这样的结果:

100 1,1 101 1

蜂巢脚本如下所示:

代码语言:javascript
运行
复制
select m1.k, wm_concat(',', m1.v) as ts
from
(
    select k, v, pt
    from test_table
    where pt <= ${date}
    order by pt
) m1
group by m1.k
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-02 17:17:29

实现这一目标的一种方法是首先使用不同分区的子查询进行交叉连接,然后计算一个新的"v“列,当pt存在于特定k时,该列的值为1,否则值为0。然后,你需要为每一个k,v对分组取最大值。我的意思是:

代码语言:javascript
运行
复制
select k, max(if(pt_join.pt == tb.pt, 1, 0)) as v, pt_join.pt as pt
from test_table tb
cross join (select distinct pt
            from test_table) pt_join
group by k, pt_join.pt

这将产生以下结果:

代码语言:javascript
运行
复制
k       v       pt
100     1       20150101
100     0       20150102
100     1       20150103
101     0       20150101
101     1       20150102
101     0       20150103

然后,您应该能够使用上面的方法来获得您想要的结果:

代码语言:javascript
运行
复制
k ts

100 1,0,1

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

https://stackoverflow.com/questions/28273652

复制
相关文章

相似问题

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