Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅返回列值已更改的行_Sql - Fatal编程技术网

Sql 仅返回列值已更改的行

Sql 仅返回列值已更改的行,sql,Sql,我正在尝试下面的查询,但返回67行。 但我只想在实体为PEP值时使用这些值 select tpe.extrnl_id_val as "CE", CASE WHEN tc.POLICALLY_EXPOSED_PERSON_IND=1 THEN (select 'Yes' from dual) ELSE (select 'No' from dual) END as "Is this entity a PEP", tc.upd_ts as "Date" from rkyc_em_01.tclient_

我正在尝试下面的查询,但返回67行。 但我只想在实体为PEP值时使用这些值

select tpe.extrnl_id_val as "CE",
CASE WHEN tc.POLICALLY_EXPOSED_PERSON_IND=1 THEN (select 'Yes' from dual)
ELSE (select 'No' from dual) END as "Is this entity a PEP",
tc.upd_ts as "Date"
from rkyc_em_01.tclient_jrnl tc,rkyc_em_01.tparty_extrnl_id tpe
where tc.party_id=tpe.party_id
and extrnl_id_val in ('1231554')
group by POLICALLY_EXPOSED_PERSON_IND, extrnl_id_val,tc.upd_ts
order by tc.upd_ts desc
输出:

CE PEP Date 1231554 Yes 10/20/2016 11:52:36 AM 1231554 Yes 10/20/2016 11:52:24 AM 1231554 Yes 10/20/2016 11:50:11 AM 1231554 Yes 10/14/2016 10:38:30 AM 1231554 No 8/18/2016 10:35:51 AM 1231554 No 7/25/2016 3:22:05 AM 1231554 No 2/17/2016 1:58:40 AM 1231554 No 10/9/2015 3:23:54 AM 1231554 No 6/26/2015 10:33:02 AM 1231554 No 6/16/2015 7:43:23 AM 1231554 No 6/27/2014 4:51:19 PM 1231554 No 2/25/2014 9:42:21 AM 1231554 No 2/18/2014 9:27:30 AM 1231554 No 12/12/2013 9:29:10 AM 1231554 No 11/25/2013 6:56:23 AM 1231554 No 5/31/2013 7:37:32 AM 1231554 No 5/31/2013 7:37:27 AM 1231554 No 3/27/2013 8:09:45 PM 1231554 No 3/4/2013 5:33:02 PM 1231554 No 12/10/2012 7:46:33 PM 1231554 No 9/24/2012 8:47:30 PM 1231554 No 9/24/2012 8:47:22 PM 1231554 No 11/21/2011 11:32:28 AM 1231554 No 11/21/2011 11:32:27 AM 1231554 No 11/18/2011 3:48:04 PM 1231554 No 8/6/2011 1:10:14 PM 1231554 No 8/6/2011 7:09:18 AM 1231554 No 8/6/2011 6:46:55 AM 预期产出:

CE PEP Date 1231554 Yes 10/14/2016 10:38:30 AM 1231554 No 8/6/2011 6:46:55 AM
这会让你走的

    SELECT * FROM (SELECT tpe.extrnl_id_val as "CE",
    CASE WHEN tc.POLICALLY_EXPOSED_PERSON_IND=1 THEN 
     (select 'Yes' from dual)
    ELSE 
     (select 'No' from dual) END as "Is this entity a PEP",
    tc.upd_ts AS "Date"
    from rkyc_em_01.tclient_jrnl tc, rkyc_em_01.tparty_extrnl_id tpe
    where tc.party_id = tpe.party_id
    and extrnl_id_val in ('1231554')
    group by POLICALLY_EXPOSED_PERSON_IND, extrnl_id_val,tc.upd_ts
    order by tc.upd_ts desc) T
  WHERE --add your condition here.

下面是如何在标准SQL中实现这一点。你用LAG查看以前的记录,看看是否有变化

select 
  extrnl_id_val as "ce",
  case when current_value = 1 then 'yes' else 'no' end as "is this entity a pep",
  upd_ts as "date"
from
(
  select 
    tpe.extrnl_id_val,
    tc.upd_ts,
    tc.polically_exposed_person_ind as current_value,
    lag(tc.polically_exposed_person_ind) over (partition by tpe.extrnl_id_val 
                                               order by tc.upd_ts desc) as previous_value
  from rkyc_em_01.tclient_jrnl tc
  join rkyc_em_01.tparty_extrnl_id tpe using(party_id)
  where tpe.extrnl_id_val in ('1231554')
)
where current_value <> previous_value or previous_value is null
order by upd_ts desc;

分享你的预期成果。为什么分组?您没有聚合任何内容。这仅仅意味着不同吗?如果是这样的话,是什么让你得到了副本?tc或tpe或两者中的多个匹配?您是否总是只寻找一个外部id值?你的数据库管理系统是什么?而且:你不应该再使用那些1992年以前用逗号分隔的连接。嘿,托尔斯滕,我已经用distinct更新了查询。不,我不会一直在寻找一个Extnl_id_valHi Thorsten Kettner,谢谢你,但我想要改变的值,但有了这个,我得到了现在的最新值。这个查询给了我6行。你能看看我的预期输出和帮助吗。谢谢你的帮助。非常感谢,我看到了您的预期输出,并确信我的查询将产生它。我必须承认,我不明白它怎么会不能产生预期的产出。查询查看按日期排序的每个ID,并检测对上一条记录的更改。这应该行得通。你能给我看一下这六行吗?我刚刚在我的DBMS上运行了一个小测试,其中一个表而不是两个表包含了你的样本记录,查询工作得很好。我已经更正了一个带有双a的打字错误,但这不会导致错误的结果,但是语法错误。1231554 no 8/6/2011 6:46:55 AM 1231554 no 8/6/2011 7:09:18 AM 1231554 no 8/18/2016 10:35:51 AM 1231554 yes 10/20/2016 11:52:36我刚在第一次选择后添加了distinct以使行计数为4,但这仍然不是我想要的。你能帮个忙吗?我不知道怎么会这样。您可能希望单独执行子查询并添加order by,以便查看所有数据。如果存在polically\u exposed\u person\u ind为null的行,则可能需要添加polically\u exposed\u person\u ind,并且polically\u person\u ind不为null。对不起,我没有别的想法;这是你必须自己解决的问题。