我在Oracle下面有一张表
Table1
ROW-ID | Fname |LName
1 | P1 | xxxx
1 | P1 | xxxx
1 | P2 | xxxx
1 | P2 | xxxy
2 | P1 | xxxx
3 | P2 | xxxx
如果FName或LName会有变化,我的输出应仅为相同的ROW-ID选择。
ROW-ID | Fname |LName
1 | P2 | xxxx
1 | P2 | xxxy
答案 0 :(得分:2)
你可以使用:
例如,
.phone buton{
opacity: 1
}
如何运作?
基本上,您希望在遍历订单中的行时查看更改发生的时间。因此, LAG()会告诉您在将其与上一行进行比较时是否发生了更改。这是 CASE 帮助您进行比较的地方。由于您需要任何列SQL> WITH sample_data AS(
2 SELECT 1 row_id, 'P1' Fname, 'xxxx' Lname FROM dual UNION ALL
3 SELECT 1 row_id, 'P1' Fname, 'xxxx' Lname FROM dual UNION ALL
4 SELECT 1 row_id, 'P2' Fname, 'xxxx' Lname FROM dual UNION ALL
5 SELECT 1 row_id, 'P2' Fname, 'xxxy' Lname FROM dual UNION ALL
6 SELECT 2 row_id, 'P1' Fname, 'xxxx' Lname FROM dual UNION ALL
7 SELECT 3 row_id, 'P2' Fname, 'xxxx' Lname FROM dual
8 )
9 -- end of sample_data mimicking real table
10 SELECT row_id,
11 Fname,
12 Lname
13 FROM
14 (SELECT row_id,
15 Fname,
16 Lname,
17 CASE
18 WHEN lag(Fname) over(partition BY row_id order by Fname) <> Fname
19 OR lag(Lname) over(partition BY row_id order by Lname) <> Lname
20 THEN 1
21 ELSE 0
22 END rn
23 FROM sample_data
24 )
25 WHERE rn = 1;
ROW_ID FNAME LNAME
---------- ----- -----
1 P2 xxxx
1 P2 xxxy
SQL>
或Fname
,因此我添加了 OR 条件。