列的练习值

问题描述 投票:0回答:2

Member
campaign2006
1
1 2007
1 2008
2 2023
2 2024
这个
Member

campaign

pastcampaigns
120062006120072006,2007120082006,2007,2008220232023220242023,2024 非常感谢您的帮助。 我试图在各种论坛上寻找一些解决方案,但找不到任何具体的解决方案。 ROW_NUMBER()的帮助下通过自我加入方法来处理这一点:
任何想法? 我们可以在
WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY Member ORDER BY Campaign) rn FROM yourTable ) SELECT t1.Member, t1.Campaign, LISTAGG(t2.Campaign) WITHIN GROUP (ORDER BY t2.Campaign) Pastcampaigns FROM cte t1 INNER JOIN cte t2 ON t2.Member = t1.Member AND t2.Campaign <= t1.Campaign GROUP BY t1.Member, t1.Campaign ORDER BY t1.Member, t1.Campaign;

调用为每个成员中的每个活动添加了一个序列。 然后,自结合的技巧将每一行与以前的坎皮金有关。 然后,我们通过成员和广告系列汇总以生成先前广告系列的CSV列表。 demo

演示在MySQL中,但逻辑和数据与雪花相同。
sql snowflake-cloud-data-platform
2个回答

0
投票
ORDER BY campaign


然后,将广告系列组合到数组中,然后
array_to_string
将数组转换为带有逗号分离值的字符串。

输出


    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.