我有一个包含一对多行的表,我想跟踪它的变化。 我正在尝试编写一个查询来获取具有相同ID号的一组行的相同序列号,如果对应的ID号发生任何更改,那么我想重复这组行以便我跟踪这些变化带有新的,我可以跟踪这个事实。
这是一个以数据开头的例子:
-barHeight
结果我正在寻找:
person_id_number person_type start_date end_date
0001 kid 2003 2009
0001 student 2010 2014
0002 teacher 2010 9999
现在,同一个person_id有一个新行:
Person_id_number person_type p_key
0001 kid 1
0001 student 1
0002 teacher 3
输出现在应该是:
person_id_number person_type start_date end_date
0001 kid 2003 2009
0001 student 2010 2014
0001 teacher 2015 9999
0002 teacher 2010 9999
我如何在SQL查询中执行此操作?
答案 0 :(得分:-1)
您可以使用date_added来聚合表中小于或等于当前行的多少个不同的date_added值。 select语句中的查询应该是您要查找的p_key字段。
select c.* ,
(select COUNT(distinct date_added)
from table ci
where ci.person_id_number=c.person_id_number
and ci.date_added <= c.date_added) p_key
from table c