2014-11-14 23 views
1

我與顯示的數據如下表吧:得到一個列的最大值在我的源表中的Informatica

send_date | household_ID 
------------------------- 
11-20-2014 | 123 
11-20-2014 | 456 
11-15-2014 | 789 

我需要做兩件事情:

1)計算最大對於SEND_DATE

2)過濾掉,我想其SEND_DATE不在於價值

換句話說匹配任何行價值的輸出是:

send_date | household_ID 
------------------------- 
11-20-2014 | 123 
11-20-2014 | 456 

行號3應該被濾除,因爲它的send_date不是最大值。

我試圖創建一個彙總,由所有列分組,並創建一個新的輸出端口名爲MAX_DATEMAX(SEND_DATE)的表達,然後與條件MAX_DATE = SEND_DATE

這通過讓所有行的過濾器改造,雖然。我該怎麼做才能做到這一點....

回答

1
  • 使用兩個源預選賽同一個源表或 - 更好的 - 留在一個單一的SQ,但分割的數據分成兩個管道(詳見下面的評論)。使用第一個和聚合器計算MAX_DATE值。
  • 然後連接SEND_DATE列上第二個來源限定符的數據。
+1

爲什麼要讀取兩次數據?使用一個SQ,將流量分成兩部分。使用aggregatro獲取最大日期,並與其他管道進行自我連接。 – Maciejg 2014-11-15 21:27:06

-1

你確定這不是你想要的嗎?

SELECT * FROM `table` WHERE `send_date` <> (SELECT MAX(`send_date`) FROM `table`) 

或者,如果我誤會了你,然後:

SELECT * FROM `table` WHERE `send_date` = (SELECT MAX(`send_date`) FROM `table`) 
+1

由於max將返回標量數據,所以在內部查詢中不需要「限制1」 。 – Rahul 2014-11-14 21:24:18

+0

@Rahul謝謝。我將編輯我的答案以消除限制。仍然不太確定,如果我理解這個問題。 – 2014-11-14 21:43:05

1

在我看來,最簡單的方法來解決這個問題是使用RANK轉換。 優勢: - 在SQ 沒有裂痕 - 沒有加入聚集 後 - 簡單:) 的變換排名頂部/底部(根據您的配置,你需要選擇「頂部」) 所以,這將通過全row,則最大send_date值將被排列爲1. 下一步是篩選排序大於1的所有行。

相關問題