2016-01-07 40 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