DB2 SQL:选择值与前一个不同的行

DB2 SQL : selecting rows where value is different from previous one

假设我有这样一个 table (PERSON):

我只想 select 列“C”的值与上一行相比发生变化的行。 在这种情况下,我应该得到:第 1、4、5、7、8、9 和 15 行。 我不知道如何实现这一目标。 有人有想法吗?

谢谢

试试这个:

WITH PERSON (ROW_NUMBER, C) AS 
(
VALUES
  ( 1, NULL::INT)
, ( 3, NULL::INT)
, ( 4, 189)
, ( 5, NULL::INT)
, ( 6, NULL::INT)
, ( 7, 212)
, ( 8, NULL::INT)
, ( 9, 235)
, (10, 235)
, (11, NULL::INT)
)
SELECT ROW_NUMBER, C
FROM
(
SELECT 
  P.*
, LAG (P.C) OVER (ORDER BY ROW_NUMBER) AS C_PREV
, LAG (P.ROW_NUMBER) OVER (ORDER BY ROW_NUMBER) AS ROW_NUMBER_PREV
FROM PERSON P
)
WHERE 
   ROW_NUMBER_PREV IS NULL 
OR (C IS DISTINCT FROM C_PREV)
ROW_NUMBER C
1
4 189
5
7 212
8
9 235
11