2012-08-24 343 views
2

我只有三排日期,但我需要有四個作爲我的輸出。我如何告訴sql獲取結束日期的最後一個數據並將其放置在開始日期的最後一行?開始日期和結束日期

我試過滯後和領先,但它似乎無法在Teradata數據庫中工作,我不知道爲什麼。

任何建議將真正幫助或替代。正如要求澄清或需要更多數據一樣。

+0

1/1/2009和12/31/2999應該是第一個和最後一個數據。 –

回答

0

一個可能的選擇:獲取感興趣的記錄集,每行編號,然後自我加入下一行。爲您的關閉添加額外記錄:

WITH numbered AS (
    SELECT effect_date, row_number() OVER (ORDER BY effect_date) AS rownum 
     FROM price 
     WHERE prod_id='4' 
) 

SELECT * 
    FROM (SELECT a.effect_date AS start_date 
       ,b.effect_date AS end_date 
      FROM numbered a 
       ,numbered b 
      WHERE b.rownum = a.rownum + 1 

      UNION 

      SELECT MAX(effect_date) 
       ,TO_DATE('29991231', 'YYYYMMDD') 
      FROM numbered 
     ) x 
    ORDER BY 1 
+0

我用了一部分代碼給了我一個想法。謝謝!它現在完美運作。 –

相關問題