在Vertica SQL中填充日期

时间:2016-01-07 18:47:13

标签: sql date vertica

我在Vertica数据库中有两个表。其中一个包含预订日期和预订日期。另一个表只是一列,所有日期都在2010-2030之间。我想创建一个查询,它将选择所有预订表数据,但创建一个新的日期字段,填充到达日期减去1天的行,一直到达日期减去90天。

表1:

+--------+------------+-----------+--------+--------+
|   ID   |  RES_DATE  | ARR_DATE  | VALUE1 | VALUE2 |
+--------+------------+-----------+--------+--------+
| 123456 | 12/16/2015 | 1/25/2016 |      4 |    100 |
+--------+------------+-----------+--------+--------+

到目前为止,我的查询是这样的,但我不确定如何为每个唯一记录创建额外的行,以填充减去90天。

select 
T1.ID ,T1.reservation_date ,dates.Date,T1.value1 ,T1.value2,T1.arrival_date
from sandbox.T1 
left join sandbox.dates on T1.reservation_date = dates.Date

所需的输出如下:

+--------+------------+-----------+--------+--------+-----------+
|   ID   |  RES_DATE  | ARR_DATE  | VALUE1 | VALUE2 | DATE_EXT  |
+--------+------------+-----------+--------+--------+-----------+
| 123456 | 12/16/2015 | 1/25/2016 |      4 |    100 | 1/25/2016 |
| 123456 |            |           |        |        | 1/24/2016 |
| 123456 |            |           |        |        | 1/23/2016 |
| 123456 |            |           |        |        | 1/22/2016 |
| 123456 |            |           |        |        | 1/21/2016 |
+--------+------------+-----------+--------+--------+-----------+

将DATE_EXT延续至-90天。

1 个答案:

答案 0 :(得分:0)

尝试以下查询:

CREATE TABLE mystore.Table1
    (ID int, RES_DATE date, ARR_DATE date, VALUE1 int, VALUE2 int)
;

INSERT  
    INTO mystore.Table1 ( ID, RES_DATE, ARR_DATE, VALUE1,VALUE2)
         VALUES (123456, '16-Dec-2015', '25-Jan-2016', 4, 100)
;

mystore_owner=> select * from mystore.Table1;
   ID   |  RES_DATE  |  ARR_DATE  | VALUE1 | VALUE2 
--------+------------+------------+--------+--------
 123456 | 2015-12-16 | 2016-01-25 |      4 |    100



CREATE TABLE mystore.dates
    (date_col date)
;


INSERT  INTO mystore.dates (date_col) VALUES ('25-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('08-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('07-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('06-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('05-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('04-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('03-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('02-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('01-Jan-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('31-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('30-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('29-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('28-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('27-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('26-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('25-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('08-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('07-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('06-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('05-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('04-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('03-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('02-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('01-Dec-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('30-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('29-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('28-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('27-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('26-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('25-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('08-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('07-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('06-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('05-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('04-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('03-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('02-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('01-Nov-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('31-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('30-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('29-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('28-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('27-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('26-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('25-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('08-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('07-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('06-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('05-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('04-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('03-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('02-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('01-Oct-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('30-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('29-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('28-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('27-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('26-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('25-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('08-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('07-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('06-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('05-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('04-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('03-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('02-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('01-Sep-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('31-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('30-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('29-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('28-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('27-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('26-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('25-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('24-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('23-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('22-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('21-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('20-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('19-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('18-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('17-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('16-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('15-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('14-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('13-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('12-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('11-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('10-Aug-2016');
INSERT  INTO mystore.dates (date_col) VALUES ('09-Aug-2016');


select T1.ID 
      ,(CASE WHEN T1.ARR_DATE = D1.date_col THEN T1.RES_DATE ELSE NULL END) AS RES_DATE
      ,(CASE WHEN T1.ARR_DATE = D1.date_col THEN T1.ARR_DATE ELSE NULL END) AS ARR_DATE
      ,(CASE WHEN T1.ARR_DATE = D1.date_col THEN T1.value1 ELSE NULL END) AS value1
      ,(CASE WHEN T1.ARR_DATE = D1.date_col THEN T1.value2 ELSE NULL END) AS value2
      ,D1.date_col
from mystore.Dates D1
left join mystore.Table1 T1 on T1.ARR_DATE = D1.date_col
WHERE date_col <= (SELECT MAX(ARR_DATE) FROM mystore.Table1)
ORDER BY date_col desc
LIMIT 90
;