在SQL中选择日期的具体代码

时间:2013-10-24 12:16:16

标签: sql sql-server

请帮忙。我必须填写的表是https://drive.google.com/file/d/0BwcVwVHkHN8SQ0thcUJwa2QwNjg/edit?usp=sharing 我想做什么:

  1. 如果每个帐户的其余部分都已更改,我想将其记录在工作表的右侧部分,如果是对于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'值的最小日期。

  2. 888的“休息”值是最后一个(如果按日期(desc)排序),所以我们必须通过将Date1指定为此“Rest”值的最小日期和“Date2”来记录此值。此特定“休息”值的日期的最大值,而不是即将到来的休息值的最小日期(因为没有这样的值)。

  3. 对不起,对于这么复杂的问题,我希望你理解。这是我为第一部分写的(它有效)。提前谢谢

    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
    

0 个答案:

没有答案