0

Oracle 版本:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 产品

我的表结构:

Field 1: Name
Field 2: Year
Field 2: Sales_Rev
Field 3: Rep_Cat

有三种类型Rep_Cat: Inside, Outside, Lead

我需要识别 Rep_Cat 字段值何时更改。因此,如果在 1993 年(年),鲍勃(姓名)是内部代表 (Rep_Cat),而 1994 年鲍勃成为外部代表,我希望查询返回 1993 年和 1994 年的鲍勃行。

我在这个网站上看到了一些声称可以这样做的“With”子句,但经过几次尝试,我无法让它们起作用。

4

2 回答 2

0

假设 Name 是唯一的 Key

这是一种可能的方式..

SELECT * from yourTable where Name in (
SELECT Name
FROM yourtable
GROUP BU name
HAVING count(Distinct Rep_cat) > 1)
于 2013-05-06T12:18:50.370 回答
0

这是分析函数的一个很好的机会。尝试这个:

select t.*
from (select t.*,
             lag(rep_cat) over (partition by name order by year) as prev_rep_cat
      from t
     ) t
where rep_cat <> pre_rep_cat

注意:这也告诉您prev_rep_cat字段中的先前值是什么。此外,由于NULL自动比较失败,您不会获得每个名称的第一行。(如果你想要那个,那么包括or prev_rep_cat is nullwhere条款中。)

于 2013-05-06T12:44:45.290 回答