사용 FIRST_VALUE() 함수를 null이 아닌 값을 지속 얻을. last_value는 하나의 정렬 키에서만 작동하기 때문에 정렬 키를 연결해야합니다.
데모 :
select distinct
key,
first_value(A) over (partition by Key order by concat(case when A is null then '1' else '2' end,'_',Timestamp)desc) A,
first_value(B) over (partition by Key order by concat(case when B is null then '1' else '2' end,'_',Timestamp)desc) B,
first_value(C) over (partition by Key order by concat(case when C is null then '1' else '2' end,'_',Timestamp)desc) C,
max(timestamp) over(partition by key) timestamp
from
( ---------Replace this subquery with your table
select 'K1' key, 'X' a, Null b, Null c, '2015-05-03' timestamp union all
select 'K1' key, null a, 'Y' b, 'Z' c, '2015-05-02' timestamp union all
select 'K1' key, 'Foo' a, 'Bar' b, 'Baz' c, '2015-05-01' timestamp
)s
;
출력 :
OK
key a b c timestamp
K1 X Y Z 2015-05-03
먼저 생각 - 유착,하지만 난 열이 덜 다시 CTE 호출을 지원하지 않습니다 하이브로 시도 할 수있는 경우 그 –
올바른 생각하지 않습니다 새로운 CTE를 만들려면 새로운 테이블을 만들거나 스토리지를 정리해야합니다. –