2015-08-18 45 views
2

這更像是記錄比較。如何在此添加結束日期?請注意,最後日期來自tableB。例如:根據Teradata中的修改日期創建虛擬加載日期表

表A

PROD  | PRICE | EffDATE 
----------------------------- 
Product1 | $15 | 03/17/2015 
Product1 | $20 | 03/20/2015 
Product1 | $21 | 03/22/2015 

表B

PROD  | PROMOSTART | PROMOEND 
---------------------------------- 
Product1 | 03/17/2015 | 03/24/2015 

輸出預計:

PROD  | PRICE | StartDATE | EndDATE 
----------------------------------------- 
Product1 | $15 | 03/17/2015 | 03/19/2015 
Product1 | $20 | 03/20/2015 | 03/21/2015 
Product1 | $21 | 03/22/2015 | **03/24/2015** 

如何ACHI前夕在Teradata SQL

回答

0

試試這個:

SELECT a.*, 
    COALESCE(MIN(EffDATE) -- next row's date 
      OVER (PARTITION BY a.PROD 
        ORDER BY EffDATE 
        ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) -1 
      ,b.PROMOEND) -- or end of promo 
FROM tableA AS a 
JOIN tableB AS b 
    ON a.PROD = b.PROD 
AND a.EffDATE BETWEEN b.PROMOSTART AND b.PROMOEND 
+0

完美!謝謝你,謝謝你..你是救星! – Kash