2015-12-10 30 views
0

下面我有一個表中填充一些示例數據。我想創建一個新的屬性2_day_state。 2_day_state查看每行的狀態並將其與前一天的相似行進行比較。根據以下兩天的值計算2_day_state的計算方法有幾種情況。例如。我們確定2_day_state(2天)的值取決於狀態1天,2計算值,而無需使用連接

這似乎是一個簡單的任務,在這裏我們可以進行自連接,以實現這一目標。 實際上,這個表有許多屬性是屬性的一部分。其中一些可以具有空值。由於我們無法加入null = null,因此必須有另一種方法來計算2_day_state。有任何想法嗎?

  • 日國家
  • 日= 1,狀態= 7
  • 日= 2,狀態= 1
  • 日= 3,狀態= 4
  • 日= 4,狀態= 0
+1

你嘗試解析函數,'MIN(COL)OVER(PARTITION BY COL1,COL2,COL3 ORDER BY COL4)'?你能展示一些示例行加預期結果嗎? – dnoeth

+0

@Rabbit:在Teradata中,似乎無法加入a = b(如果a和b爲空)。我想我知道如何解決它。我無法驗證它。相反,加入COALESCE(a,'value')= COALESCE(b,'value) –

+0

沒有DBMS將加入NULL。而不是'COALESCE'更好地使用@兔子的'OR'-條件,這會導致更好的性能...... – dnoeth

回答

0

事實並非如此,你可以加入空:ON table1.ID = table2.ID AND (table1.field1 = table2.field2 OR (table1.field1 IS NULL AND table2.field2 IS NULL))。另一方面,你真的應該避免鍵值爲null的鍵。