请帮忙。我必须填写的表是https://drive.google.com/file/d/0BwcVwVHkHN8SQ0thcUJwa2QwNjg/edit?usp=sharing 我想做什么:
如果每个帐户的其余部分都已更改,我想将其记录在工作表的右侧部分,如果是对于accNumber 123(例如,有五个帐户的accNumber 123),“Rest”表示前3个条目(按日期排序)是777,他们的日期是12/01 / 2013,15 / 01 / 2013,18 / 01/2013;其他2个条目的“休息”值为888,日期为19/01/2013和29/01/2013。由于“休息”在第三个条目上已更改,因此记录应为accNumber(333),Rest(777),Date1(12/01/2013),Date2(2013年1月19日)。因此,Date1是具有相同'Rest'值的最小日期,Date2是下一个'Rest'值的最小日期。
888的“休息”值是最后一个(如果按日期(desc)排序),所以我们必须通过将Date1指定为此“Rest”值的最小日期和“Date2”来记录此值。此特定“休息”值的日期的最大值,而不是即将到来的休息值的最小日期(因为没有这样的值)。
对不起,对于这么复杂的问题,我希望你理解。这是我为第一部分写的(它有效)。提前谢谢
select a.accNumber, a.Rest, min(a.Date), min(b.Date)
from tt1 a, tt1 b
where b.Date>a.Date
and a.accNumber=b.accNumber
and a.Rest<>b.Rest
Group by a.accNumber, a.Rest