如何从条件的sql server中获取数据?

问题描述:

我正在使用Sql Server!如何从条件的sql server中获取数据?

我的问题是:我的客户表中有15000条记录,我想在一天内处理前5000条记录,第二天我每天处理下5000条记录。每天的操作都是在有限的记录中执行,客户表的数据经常变化。还可以获取未处理的待处理记录的数量。请给你有用的建议如何做到这一点。感谢

更多细节:使用

  1. 日期时间戳在表
  2. 字段:[FIRST_NAME],[middle_name],[姓氏],[创建],[CREATED_BY],[CUSTOMER_NUMBER]
+0

你可以发表表的模式吗?如果行已被处理,您是否可以建议您是否保留日期时间戳记?如果您的操作非常简单,那么从DataTable中选择top 5000 *,其中datetimeprocessed为空orderCodeCol ASC –

+0

客户表更改如何影响您的日常处理? –

+0

,[FIRST_NAME] ,[middle_name] ,[姓氏] ,[创建] ,[CREATED_BY] ,[CUSTOMER_NUMBER] –

最简单的方法可以是通过添加两列(如果不存在)。 updated_atprocessed_atupdated_at列将更新行更新。当您在日常工作中开始处理该行时,将会更新processed_at列。现在你的查询会是这样的。

select * from your_table where updated_at > processed_at limit 5000; 

我会假设你有某种形式的ID在你的表...

所以你设置你的程序的开始日期,并比较这(我用“2016- 01-01'):

with CTE as 
(
select t1.*, row_number() over(order by customer_id) as r_ord 
from Mytable t1 
) 
select CTE.* 
from CTE 
where (mod(datediff(day, '2016-01-01', getdate()),3) = 0 and r_ord <= 5000) 
or (mod(datediff(day, '2016-01-01', getdate()),3) = 1 and r_ord between 5001 and 10000) 
or (mod(datediff(day, '2016-01-01', getdate()),3) = 2 and r_ord > 10000)