解决方案 »

  1.   

    SELECT sheet1$.卡号,sheet1$.,账号
    FROM
    (SELECT 卡号,,账号,
                           MIN(交易时间) FirstTime
                      FROM sheet1$
                  GROUP BY 卡号,账号
               ) sheet1$
          JOIN sheet1$  t
            ON t.卡号 = sheet1$.卡号
           AND t.交易时间 <= DateAdd(MINUTE,5,sheet1$.FirstTime)
            GROUP BY sheet1$.卡号,sheet1$.,账号 
      

  2.   

    其实我没明白你的意思你之前是想查数据吗?如果是,明显没有SELECT子句,如果我严重理解错误,还请你提醒一下
      

  3.   

    select sheet1$.卡号,sheet1$.账号,sheet1$.渠道,sheet1$.交易时间,sheet1$.交易状态,aaa.卡号交易商户次数
    from sheet1$,(
    select aa.卡号,COUNT(*)as 卡号交易商户次数
    from (
        SELECT sheet1$.卡号,Sheet1$.账号,
               COUNT(*) c
          FROM (
                    SELECT 卡号,账号,
                           MIN(交易时间) FirstTime
                      FROM sheet1$
                      where sheet1$.交易状态 like '成功'
                  GROUP BY 卡号,账号
               ) sheet1$
          JOIN sheet1$ t
            ON t.卡号 = sheet1$.卡号
           AND t.交易时间 <= 
           (MINUTE,5,sheet1$.FirstTime)
            GROUP BY sheet1$.卡号,sheet1$.账号
        HAVING COUNT(*) >= 4
      )aa
    group by 卡号 having count(*)>2)aaa
      where sheet1$.卡号=aaa.卡号 
    and sheet1$.交易状态='成功'这个是完整的命令
      

  4.   

    例如表格是这样的
    卡号 账号 交易时间
    AA A 2015-02-10 12:33:51
    AA B 2015-02-10 19:33:51
    AA C 2015-02-10 17:39:05
    AA M 2015-02-10 19:17:49
    AA Q 2015-02-10 13:21:52
    BB N 2015-02-10 19:18:43
    BB O 2015-02-10 19:18:15
    BB P 2015-02-10 19:43:17
    BB P 2015-02-10 19:52:20
    BB P 2015-02-10 19:47:50
    CC E 2015-02-10 16:42:39
    CC F 2015-02-10 15:24:04
    CC G 2015-02-10 20:03:16
    CC G 2015-02-10 15:25:24
    CC G 2015-02-10 20:06:27
    CC K 2015-02-10 19:16:37
    CC K 2015-02-10 19:59:18
    CC L 2015-02-10 20:02:04
    CC L 2015-02-10 19:53:47
    DD D 2015-02-10 15:28:49
    DD H 2015-02-10 15:24:33
    DD H 2015-02-10 15:23:43
    DD I 2015-02-10 15:25:00我最后要的结果是
    卡号 账号 交易时间 卡号交易过账号次数
    BB N 2015-02-10 19:18:43 3
    BB O 2015-02-10 19:18:15 3
    BB P 2015-02-10 19:43:17 3
    BB P 2015-02-10 19:52:20 3
    BB P 2015-02-10 19:47:50 3
    CC E 2015-02-10 16:42:39 5
    CC F 2015-02-10 15:24:04 5
    CC G 2015-02-10 20:03:16 5
    CC G 2015-02-10 15:25:24 5
    CC G 2015-02-10 20:06:27 5
    CC K 2015-02-10 19:16:37 5
    CC K 2015-02-10 19:59:18 5
    CC L 2015-02-10 20:02:04 5
    CC L 2015-02-10 19:53:47 5
    DD D 2015-02-10 15:28:49 3
    DD H 2015-02-10 15:24:33 3
    DD H 2015-02-10 15:23:43 3
    DD I 2015-02-10 15:25:00 3
    不知道为什么用我那个命令出来之后卡号AA的也都出来了
    就是要卡号AA在A在出现过之后 5分钟之内B也出现过这些数据
    不知道我那个命令哪出错了
    还是我表达不清楚请指正
      

  5.   

    BB N 2015-02-10 19:18:43 3
    这边的3次是怎么算出来的啊还有
    CC E 2015-02-10 16:42:39
    这个记录 不管是5分钟之前,还是5分钟之后,貌似都没有同卡号的数据
      

  6.   

    BB N是
    卡号BB在 N O P 3个账户上有过记录所以返还3
      

  7.   

    正如你说的,这条记录,5分钟内 没有交易记录
    CC E 2015-02-10 16:42:39为什么会在结果列表里
      

  8.   

    SELECT * FROM sheet1$
    WHERE 卡号 IN(
    SELECT 卡号
    FROM sheet1$ T1
    WHERE EXISTS(SELECT 1 FROM sheet1$ WHERE 卡号=T1.卡号 AND 账号<>T1.账号 AND
    交易时间 BETWEEN DATEADD(MINUTE,-5,T1.交易时间)AND DATEADD(MINUTE,5,T1.交易时间))
    GROUP BY 卡号
    )应该是这个意思这边的IN是标量查询影响效率不大
    而里面的EXISTS根据你的数量,我再尝试另外的写法
      

  9.   

    /* 测试数据
    WITH [sheet1$](卡号,账号,交易时间) AS (
    SELECT 'AA','A','2015-02-10 12:33:51' UNION ALL
    SELECT 'AA','B','2015-02-10 19:33:51' UNION ALL
    SELECT 'AA','C','2015-02-10 17:39:05' UNION ALL
    SELECT 'AA','M','2015-02-10 19:17:49' UNION ALL
    SELECT 'AA','Q','2015-02-10 13:21:52' UNION ALL
    SELECT 'BB','N','2015-02-10 19:18:43' UNION ALL
    SELECT 'BB','O','2015-02-10 19:18:15' UNION ALL
    SELECT 'BB','P','2015-02-10 19:43:17' UNION ALL
    SELECT 'BB','P','2015-02-10 19:52:20' UNION ALL
    SELECT 'BB','P','2015-02-10 19:47:50' UNION ALL
    SELECT 'CC','E','2015-02-10 16:42:39' UNION ALL
    SELECT 'CC','F','2015-02-10 15:24:04' UNION ALL
    SELECT 'CC','G','2015-02-10 20:03:16' UNION ALL
    SELECT 'CC','G','2015-02-10 15:25:24' UNION ALL
    SELECT 'CC','G','2015-02-10 20:06:27' UNION ALL
    SELECT 'CC','K','2015-02-10 19:16:37' UNION ALL
    SELECT 'CC','K','2015-02-10 19:59:18' UNION ALL
    SELECT 'CC','L','2015-02-10 20:02:04' UNION ALL
    SELECT 'CC','L','2015-02-10 19:53:47' UNION ALL
    SELECT 'DD','D','2015-02-10 15:28:49' UNION ALL
    SELECT 'DD','H','2015-02-10 15:24:33' UNION ALL
    SELECT 'DD','H','2015-02-10 15:23:43' UNION ALL
    SELECT 'DD','I','2015-02-10 15:25:00'
    )*/
            SELECT *
              FROM [sheet1$] t1
       CROSS APPLY (
                    SELECT COUNT(DISTINCT 账号) 卡号交易过账号次数
                      FROM [sheet1$] t2
                     WHERE t2.卡号 = t1.卡号
                       AND t2.交易时间 BETWEEN DATEADD(minute,-5,t1.交易时间)
                                           AND DATEADD(minute,5,t1.交易时间)
                   ) s
             WHERE s.卡号交易过账号次数 > 1
    卡号 账号 交易时间            卡号交易过账号次数
    ---- ---- ------------------- ------------------
    BB   N    2015-02-10 19:18:43                  2
    BB   O    2015-02-10 19:18:15                  2
    CC   F    2015-02-10 15:24:04                  2
    CC   G    2015-02-10 20:03:16                  3
    CC   G    2015-02-10 15:25:24                  2
    CC   G    2015-02-10 20:06:27                  2
    CC   K    2015-02-10 19:59:18                  3
    CC   L    2015-02-10 20:02:04                  3
    DD   D    2015-02-10 15:28:49                  3
    DD   H    2015-02-10 15:24:33                  3
    DD   H    2015-02-10 15:23:43                  2
    DD   I    2015-02-10 15:25:00                  3