日期:2014-05-17  浏览次数:20421 次

按日期过滤重复
有下列表
id 车架号 充值金额 充值时间 销售员 次数
1  LVGB123  1980 2012-08-06 17:42:57.000  张三
2  LVGB545  2980 2012-09-15 11:42:57.000  李四
4  LVGB623  1980 2012-09-26 13:42:57.000  张三
5  LVGB532  -2980 2012-09-27 14:42:57.000  王五
8  LVGB234  2980 2012-09-28 15:42:57.000  王五
10  LVGB623  1980 2012-09-30 13:42:57.000  王五
11 LVGB623  2980 2012-09-30 18:43:57.000  张三

我想查询出2012年9月份的数据并按充值日期来过滤,其中第10 第11项是同一车架号在同一天充值的,所以只想保留第10项把11项去掉。得出下列结果并插入临时表:
id 车架号 充值金额 充值时间 销售员 次数
2  LVGB545  2980 2012-09-15 11:42:57.000  李四
4  LVGB623  1980 2012-09-26 13:42:57.000  张三
5  LVGB532  -2980 2012-09-27 14:42:57.000  王五
8  LVGB234  2980 2012-09-28 15:42:57.000  王五
10  LVGB623  1980 2012-09-30 13:42:57.000  王五

------解决方案--------------------
SELECT B.*
FROM
(
SELECT DISTINCT 车架号 
FROM dbo.tablename
WHERE 充值时间 >= '2012-09-01'
AND 充值时间 < '2012-10-01'
) A
CROSS APPLY
(
SELECT TOP (1) *
FROM dbo.tablename
WHERE 车架号 = A.车架号
ORDER BY id
) B
ORDER BY id