Oracleのセットアップ:
CREATE TABLE table_name (ID, Type, Val, Creation_date) AS
SELECT 1, 'A', 'V1', DATE '2011-09-24' FROM DUAL UNION ALL
SELECT 2, 'B', 'X1', DATE '2001-12-15' FROM DUAL UNION ALL
SELECT 3, 'A', 'V1', DATE '2008-10-27' FROM DUAL UNION ALL
SELECT 4, 'A', 'V2', DATE '2003-10-19' FROM DUAL UNION ALL
SELECT 5, 'B', 'X2', DATE '2000-12-15' FROM DUAL UNION ALL
SELECT 6, 'C', 'X3', DATE '2001-12-23' FROM DUAL UNION ALL
SELECT 7, 'B', 'X2', DATE '1990-12-15' FROM DUAL;
クエリ:
SELECT ID,
TYPE,
val,
Creation_date
FROM (
SELECT t.*,
LAST_VALUE(val) OVER (
PARTITION BY type
ORDER BY creation_date
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS last_val
FROM table_name t
)
WHERE val <> last_val;
出力:
ID TYPE VAL CREATION_DATE
---------- ---- --- -------------------
4 A V2 2003-10-19 00:00:00
7 B X2 1990-12-15 00:00:00
5 B X2 2000-12-15 00:00:00
出典
2016-05-29 19:18:44
MT0
は、私は、最新のvalues.Iが古い値をたくたくない... – Neha
このクエリの両方が彼のために動作しません。 – sagi
@Neha。 。 。最も古い値が必要な場合は、 'desc'の代わりに' asc'を使用してください。 –