我目前在使用2个日期字段时遇到问题,这两个日期字段驱动了我刚刚加入的2个不同的报告。一个叫做Month_start_dt,另一个叫做Tran_dt。 Month_start_dt正在推动收入报告,Tran_dt正在推动绩效报告。我已将2个查询暂存到新表中,但是2日期与同一个customer_id不匹配。我想看看如何将2日期结合起来,以便在Tableau报告中,我可以使用一个日期过滤器来获取性能和收入信息。
由于
目前数据如下:
customer_id/month_start_dt/Tran_dt
11111 / 12-1-2017 / 4-20-2017
22222 / 11-1-2017 / 12-3-2017
33333 / 9-1-2016 / 4-6-2017
44444 / 2-1-2017 / 5-3-2016
希望结果看起来像这样:
customer_id / month_start_dt
11111 / 12-1-2017
11111 / 4-20-2017
22222 / 11-1-2017
22222 / 12-3-2017
33333 / 9-1-2016
33333 / 4-6-2017
44444 / 2-1-2017
44444 / 5/3/2016
答案 0 :(得分:0)
您可以使用cross join
乘以任何表的行,并且可以使用简单返回2行的子查询。 e.g:
select
customer_id
, case when rn = 1 then month_start_dt else Tran_dt end month_start_dt
, case when rn = 1 then 'month_start_dt' else 'Tran_dt' end dt_type
from table1
cross join (select 1 as rn union all select 2) cj
会产生:
| customer_id | month_start_dt | dt_type |
|-------------|----------------------|----------------|
| 11111 | 2017-12-01T00:00:00Z | month_start_dt |
| 11111 | 2017-04-20T00:00:00Z | Tran_dt |
| 22222 | 2017-11-01T00:00:00Z | month_start_dt |
| 22222 | 2017-12-03T00:00:00Z | Tran_dt |
| 33333 | 2016-09-01T00:00:00Z | month_start_dt |
| 33333 | 2017-04-06T00:00:00Z | Tran_dt |
| 44444 | 2017-02-01T00:00:00Z | month_start_dt |
| 44444 | 2016-05-03T00:00:00Z | Tran_dt |
注意,上面的查询适用于MySQL和Postgres,但如果我们确切地知道要定位的数据库类型,它确实很有帮助。请仅使用正确的数据库标记