首页 > 解决方案 > 将多个表中的数据合并到一个列中

问题描述

我当前的表 A 输出如下所示:

id  event        timestamp              registered acct_add funded applied 
1   Register     5/18/2018 4:00:00 AM   1         0         0      0 
1   AddAccount   5/18/2018 5:00:00 AM   0         1         0      0
1   Funded       5/18/2018 6:00:00 AM   0         0         1      0 
2   Register     5/18/2018 7:00:00 AM   1         0         0      0
2   AddAccount   5/18/2018 8:00:00 AM   0         1         0      0
2   Funded       5/18/2018 9:00:00 AM   0         0         1      0 

的值event应该是:

'Register', 
'AddAccount',
'Funded',
'Applied'(*)

事实证明,直到某个日期,最后一个事件才被触发。但是,表 B 有两列:idapplication_date、 ,并且可以转换为:

id  application_date       applied 
1   5/18/2018 6:30:00 AM   1         
2   5/18/2018 9:30:00 AM   1     

实际上,我的查询是 5+ 表和 100+ 行代码的组合,所以您能否建议我如何将这两个表结合起来以包含一个视图,最好没有联合,这样:

id  event        timestamp              registered acct_add funded applied 
1   Register     5/18/2018 4:00:00 AM   1         0         0      0 
1   AddAccount   5/18/2018 5:00:00 AM   0         1         0      0
1   Funded       5/18/2018 6:00:00 AM   0         0         1      0 
1   Applied      5/18/2018 6:30:00 AM   0         0         0      1 
2   Register     5/18/2018 7:00:00 AM   1         0         0      0
2   AddAccount   5/18/2018 8:00:00 AM   0         1         0      0
2   Funded       5/18/2018 9:00:00 AM   0         0         1      0 
2   Applied      5/18/2018 9:30:00 AM   0         0         0      1 

谢谢!

标签: sqlamazon-redshift

解决方案


这是对 The Impaler 对阶段表 B 的回答的调整,其顺序与表 A 相同,单引号硬文本,并将最后的 0 修改为 1,以表明肯定应用了 ID。

select * from (
  select * from table_a
  union all select id, 'Applied', application_date,  0, 0, 0, 1 from table_b
  ) all_rows
order by id, timestamp;

我会将此作为对您的回答的评论,但我还不能发表评论。


推荐阅读