sql >> データベース >  >> RDS >> Sqlserver

日付範囲によって制限された、特定の期間内の複数のトランザクション

    残念ながら、SQL Server 2005 のウィンドウ関数は十分に強力ではありません。相関サブクエリを使用してこれを解決します。

    相関サブクエリは、ユーザーが各購入後 14 日以内にアイテムを購入した回数をカウントします (最初の購入はカウントしません)。

    select t.*
    from (select t.*,
                 (select count(*)
                  from t t2
                  where t2.personnumber = t.personnumber and
                        t2.itemnumber = t.itemnumber and
                        t2.transactionnumber <> t.transactionnumber and
                        t2.transactiondate >= t.transactiondate and 
                        t2.transactiondate < DATEADD(day, 14, t.transactiondate
                 ) NumWithin14Days
          from transactions t
          where transactionDate between '2001-01-01' and '2001-03-01'
         ) t
    where NumWithin14Days > 0
    

    サブクエリにも時間制限を入れたいと思うかもしれません.

    transactions(personnumber, itemnumber, transactionnumber, itemdate) のインデックス



    1. PostgreSQLを使用して過去24時間からレコードを選択する方法

    2. コンポジション主キーの外部参照キーを作成する方法

    3. 大量のレコードで雄弁を避けることができますか

    4. Java SQLServer2012データベースを開くことができませんエラー