2013-07-19 69 views
1

Teradata的查询看起来是这样的:获得一个状态的最高值

Select 
a, 
b, 
MIN(Record_Start_Date) as MIN_Record_Start_Date, 
MAX(Record_End_Date) as MAX_Record_End_Date 
FROM tbl 
GROUP BY 1,2 

现在我想添加第三个属性“地位”。问题是 - 我只想要“最后”状态 - 具有最高值“Record_End_Date”的行的值。

任何人都可以帮忙吗?

+0

是不是'MAX(Record_End_Date)'在Teradata上工作? – Slim

+0

我想STATUS列的值 - 一个值Record_End_Date = MAX(Record_End_Date) – Adam

回答

4

切换到一个OLAP功能而非总:

SELECT 
    a, 
    b, 
MIN(Record_Start_Date) OVER (PARTITION BY a, b) AS MIN_Record_Start_Date, 
Record_End_Date AS MAX_Record_End_Date, 
Status 
FROM tbl 
QUALIFY 
    ROW_NUMBER() 
    OVER (PARTITION BY a,b 
     ORDER BY Record_End_date DESC) = 1