0

私が現在持っているデータは、以下の表のようになります。

 UserId      VisitDate
 1           2012-01-01 00:15:00.000
 1           2012-01-01 00:16:00.000
 1           2012-01-12 00:15:00.000
 1           2012-01-12 00:16:00.000
 1           2012-01-24 00:15:00.000
 1           2012-01-24 00:16:00.000

10日以上離れている結果のみを返したいので、次のようになります。

 UserId      VisitDate
 1           2012-01-01 00:15:00.000
 1           2012-01-12 00:15:00.000
 1           2012-01-24 00:15:00.000

おそらく私が作成しているよりも単純ですが、transact-sqlでこれを行うにはどうすればよいでしょうか。

4

1 に答える 1

1

その場合、新しいlag()関数を使用できます: http://msdn.microsoft.com/en-us/library/hh231256.aspx

何かのようなもの:

SELECT UserId, VisitDate
FROM(
  SELECT UserId,
         VisitDate, 
         LAG(VisitDate,1,'1900-01-01')OVER(PARTITION BY UserId ORDER BY VisitDate) PrevVisitDate
   FROM dbo.YourTable
)X
WHERE DATEDIFF(day,PrevVisitDate,VisitDate)>=10;

ここで動作を確認できます: http://sqlfiddle.com/#!6/a0f02/1

于 2013-02-13T17:12:32.710 に答える