0

さて、ここに問題があります:日付がスタンプされたトランザクションのテーブルがあります。日付がすでに日付スタンプから削除されており、テーブルが次のようになっているとします。

;WITH TRX(TRX_Id, TRX_SalesTotal, TRX_TimeStamp) AS
    (
        SELECT  1, 100, '09:00:00' UNION ALL
        SELECT  2, 100, '09:10:00' UNION ALL
        SELECT  3, 200, '17:00:00' UNION ALL
        SELECT  4, 999, '11:50:00' UNION ALL
        SELECT  5, 999, '12:10:00' UNION ALL
        SELECT  6, 999, '12:15:00' UNION ALL
        SELECT  7, 100, '08:50:00' UNION ALL
        SELECT  8, 600, '17:00:00' UNION ALL
        SELECT  9, 700, '17:00:00' UNION ALL
        SELECT 10, 100, '09:45:00' UNION ALL
        SELECT 11, 100, '17:00:00' UNION ALL
        SELECT 12, 777, '09:00:00' UNION ALL
        SELECT 13, 777, '09:10:00' UNION ALL
        SELECT 14, 777, '10:10:00' 
    )

1時間に2回以上売上高が発生するすべてのトランザクションについて報告する必要があります。任意の時間に。(したがって、データに応じて、そのような期間の1つは、1つの売上合計で12:30〜13:30、別の売上合計で12:05〜13:05になります。)

したがって、上記のデータの結果は次のようになります。

TRX_ID   TRX_SalesTotal      TRX_TimeStamp
1        100                 09:00:00 
2        100                 09:10:00
7        100                 08:50:00
10       100                 09:45:00
4        999                 11:50:00
5        999                 12:10:00
6        999                 12:15:00        

どんな助けでも大歓迎です!

4

1 に答える 1

0
SELECT TRX_Id, TRX_SalesTotal, TRX_TimeStamp
FROM TRX TRX1
WHERE (SELECT COUNT(*)
       FROM TRX TRX2
       WHERE TRX1.TRX_SalesTotal=TRX2.TRX_SalesTotal
             AND
             TRX1.TRX_TimeStamp BETWEEN DATEADD(hour, -1, TRX2.TRX_TimeStamp)
                                        AND
                                        DATEADD(hour, 1, TRX2.TRX_TimeStamp))
       >1

このSQLFiddleを参照してください

于 2013-02-12T08:36:02.350 に答える