2014-10-22 56 views
0

我有這種格式的數據:選擇表格中的最小日期值

Account security_name, broker_name balance_bf, tran_amt tran_date 

2323232 sec_a   br_a   400   -200  06-10-2014 
2323232 sec_b   br_b   800   400  06-10-2014 
2323232 sec_a   br_a   200   -300  06-10-2014 
2323232 sec_a   br_a   200   -300  07-10-2014 
2323232 sec_b   br_b   1200   400  09-10-2014 

我需要寫設定出現基於security_name和代理名稱每一行開幕balance_bf結果。例如。

account security_name broker_name balance_bf tran_amt tran_date first_tran_date 
2323232 sec_a   br_a   400   -200  06-10-2014 06-10-2014 
2323232 sec_b   br_b   800   400  06-10-2014 06-10-2014 
2323232 sec_a   br_a   400   -300  06-10-2014 06-10-2014 
2323232 sec_a   br_a   400   -300  07-10-2014 06-10-2014 
2323232 sec_b   br_b   800   400  09-10-2014 06-10-2014 

的Tran_date具有時間戳,所以我可以命令他們,我只是想獲得第一balance_bf和第一tran_date上的每一行

我已經試過

select account, security_name, broker_name,tran_amt, min(tran_date)first_tran_date 
from customer_transactions group by account, security_name, broker_name,tran_amt order by tran_date; 

當然,這不不工作,因爲金額會有所不同。請幫忙。

回答

3

可以使用FIRST_VALUE功能:

select Account, security_name, broker_name, balance_bf, tran_amt, tran_date, 
    FIRST_VALUE(balance_bf) OVER (PARTITION BY security_name, broker_name ORDER BY tran_date) as first_balance, 
    FIRST_VALUE(tran_date) OVER (PARTITION BY security_name, broker_name ORDER BY tran_date) as first_tran_date 
from customer_transactions; 
相關問題