sql - 将多个表中的数据合并到一个列中
问题描述
我当前的表 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 有两列:id
、application_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
谢谢!
解决方案
这是对 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;
我会将此作为对您的回答的评论,但我还不能发表评论。