查找select语句,以根据PARENTGROUPID
编号查找一组文档中的记录,其中来自该子组的日期值与该组不一致。如果有帮助,父组ID将始终是组中记录的最低值。
例如。我有以下记录
RecordNUM ParentGroupID Date
000001 000001 5/1/2014
000002 000001 5/1/2014
000003 000001 5/2/2014
000004 000004 11/2/2013
000005 000004 11/2/2013
000006 000006 1/23/2014
000007 000006 1/23/2014
000008 000006 1/23/2014
000009 000006 1/25/2014
我正在尝试捕获不一致的日期作为groupID 00001的示例,其中日期是5/2/2014,其中一个孩子但父母是5/1/2014。应该从支票中拿出的另一组也是groupID 00006,其中最后一个孩子的日期是2014年1月25日而不是2014年1月23日
答案 0 :(得分:1)
这是一种使用min over
获取父母日期的方法,然后将其与孩子的日期进行比较:
with cte as (
select *, min(dt) over (partition by parentgroupid) mindt
from yourtable
)
select *
from cte
where dt <> mindt
答案 1 :(得分:0)
如果您只想要ParentGroupID
和Date
并且不需要RecordNUM
,则可以使用EXCEPT
运营商:
select parentgroupid, date from your_table
except
select parentgroupid, min(date)
from your_table
group by parentgroupid
这将形成一组所有行,并从中减去包含每个ParentGroupID的min(日期)的集合。
如果您还需要RecordNUM
列,则可以将上述查询用作联接中的子查询:
select * from your_table t1
inner join (
select parentgroupid, date from your_table
except
select parentgroupid, min(date)
from your_table
group by parentgroupid
) t2 on t1.ParentGroupID = t2.ParentGroupID and t1.Date = t2.Date