CREATE TABLE test (
revisionId char primary key,
claimId char,
revisionDate datetime,
lossDate datetime
);
INSERT INTO test (id, claimId, revisionDate, lossDate)
VALUES
('asdjb990n','oo223',2020-01-01 10:30:00,2020-01-30 12:30:00)
('asdjb990n2','oo223',2020-01-02 10:30:00,2020-01-30 12:30:00)
('asdjkn897','ioas992', 2020-04-02 11:30:00,2020-04-01 10:30:00)
('asdjkn123','ioas992', 2020-04-03 11:30:00,2020-04-01 10:30:00)
('sdnjkn998','oo2231', 2020-02-02 12:31:00,2020-02-15 11:00:00)
这是一个保险问题。我有索赔日期和保单修改日期。大多数情况下,在损失日期之前有一次修订。99%的时间我们希望包含修订日期最接近lossdate之前的修订ID。在索赔'oo223'的情况下,损失日期前最接近的修订日期是修订ID'asdjb990n2'
不起作用的情况如下:
假设我们买了另一家保险公司。当我们收购他们的公司时,我们也接受他们的要求。在这种情况下,在任何修订id存在之前,我们可能有一个lossdate(如修订id='asdjkn897')。
我需要一个说法:
对于每个索赔,如果在损失日期之前有修订日期,则包括最接近损失日期之前的修订ID,或者如果之前没有修订ID,则包括损失日期之后最早的修订ID。
因此,在claimid='ioas992'的情况下,因为revisionid='asdjkn897'的修订日期是2020-04-02,我希望该修订id是损失日期之后最早的修订(因为在损失日期之前没有修订)。
编辑:对不起,最后一行的损失日期不对
我只想返回与每个索赔id的正确修订日期相关联的修订id
claimid\uu修订ID
'oo223'-'asdjb990n2'
“ioas992”-“asdjkn897”
'oo2231'-'sdjkn998'
1条答案
按热度按时间suzh9iv81#
假设索赔的所有行上的损失日期一致,则可以使用聚合:
基本上,这将查找丢失前的最大修订日期。如果没有,那就在那一天之后第一次。
然后可以重新联接到表以获取有关修订的更多信息。
这是一把小提琴。