2016-01-07 39 views
0

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

表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天。

+0

感谢VKP。我只是在提交后更多地如何调整格式。 – Bernardo

回答

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 
; 
+0

这似乎没有工作。它给了我所有日期(2010-2030),然后从T1中记录。 – Bernardo

+0

@Bernardo编辑并验证。让我知道这个是否奏效 。 – minatverma

+0

我认为它很接近。也许这个模拟excel会有所帮助。对于每个唯一的ID/RES_DATE/ARR_DATE,我想从ARR_DATE值中返回90行日期。我在这里有两个样本记录。 https://dl.dropboxusercontent.com/u/60455118/stackoverflow_sample.xlsx – Bernardo