2013-07-19 2 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

Не 'макс (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