2015-02-08 69 views
0

我很困惑,爲什麼我們使用這種分鐘function.I我無法理解下面的代碼片段是如何引導works.Please是什麼之前和Teradata的查詢下面的區別

COALESCE(min((start_Date)) OVER (partition by Seq_id ORDER BY start_Date rows between 1 following and 1 following),cast('9999-12-31 00:00:00' as timestamp(6)) end_Date FROM table.test1 
+0

的Teradata不是甲骨文。 – 2015-02-08 16:53:54

回答

2

這是您的查詢:

SELECT COALESCE(min((start_Date)) OVER (partition by Seq_id 
             ORDER BY start_Date 
             rows between 1 following and 1 following 
            ), 
     cast('9999-12-31 00:00:00' as timestamp(6)) 
     ) as end_Date 
FROM table.test1 

此查詢正在做;

SELECT COALESCE(LEAD(Start_Date) OVER (PARTITION BY seq_id ORDER BY start_date), 
       cast('9999-12-31 00:00:00' as timestamp(6)) 
       ) as end_Date 

也就是說,它是取由Start_Date限定從「下一」行的日期值。

我認爲這個構造被使用是因爲(某些版本)Teradata不支持LEAD()

+0

您能否澄清爲什麼我們在聚合函數中使用min函數。 1跟隨和1跟隨是什麼意思? – 2015-02-08 17:05:26

+0

@RajeswariRanganathan。 。 。這是一個窗口/分析功能。你應該查看文檔以查看它是如何使用的。如果你使用''前面'',你有相當於'lag()'。 – 2015-02-08 17:20:44

0

你會發現Teradata的窗函數很好的解釋,之前和前段之間行: http://pauldhip.blogspot.dk/2015/04/window-function-rows-between-preceding.html

+0

博客鏈接有死亡的傾向,讓答案無用 - 您能否將相關部分包含在答案中? – 2015-05-06 20:40:03

+0

嗨本,博客文章正好解釋了這篇文章的標題,它有很好的解釋,很容易理解。但有人需要閱讀兩篇文章才能清楚地理解。如果你還不明白,請問我。 – Paul 2015-06-14 08:47:47

相關問題