解决方案 »
- 新手求解。。
- 我想设置2008MSSQL数据库中的某个表的某个字段不能输入某个数字该怎么弄?
- 为什么不能登录SQL 2005
- 【SQLSERVER】insert数据同步问题。
- sql并发用户最大连接数是多少
- 求插入数据(insert语句)的解决方法
- 谁做过SqlServer2005数据表到Oracle的同步?帮帮我吧,一直不成功。
- 如何用PowerDesigner来同过已有的数据库,更新已生成的pdm?
- 树型结构表的查询问题--如果得到一个节点下的所有子节点
- 在sql server中怎样设置主键!!
- mssql linkserver 到mysql
- ROW_NUMBER() 作为查询条件下如何过滤重复的数据?
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$.,账号
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$.交易状态='成功'这个是完整的命令
卡号 账号 交易时间
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也出现过这些数据
不知道我那个命令哪出错了
还是我表达不清楚请指正
这边的3次是怎么算出来的啊还有
CC E 2015-02-10 16:42:39
这个记录 不管是5分钟之前,还是5分钟之后,貌似都没有同卡号的数据
卡号BB在 N O P 3个账户上有过记录所以返还3
CC E 2015-02-10 16:42:39为什么会在结果列表里
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根据你的数量,我再尝试另外的写法
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