【发布时间】:2014-04-23 16:15:59
【问题描述】:
以下是样本数据,
DECLARE @maxval int, @minval int
select @maxval=201301,@minval=201312
SELECT top 100001 CAST(((@maxval + 1) - @minval) *
RAND(CHECKSUM(NEWID())) + @minval AS int)Date ,ceiling (RAND(CHECKSUM(NEWID())) *1000+25692*RAND(CHECKSUM(NEWID())) )*ceiling (RAND(CHECKSUM(NEWID())) *1000+25692*RAND(CHECKSUM(NEWID())) )ID
into #sample from sysobjects , syscolumns
问题:
- 有 2 列日期和 ID
- 获取第一个月的 id,例如 201302
- 需要在接下来的 3 个月内确定这些 ID 是否可用。所以这里是 201303,201304,201305
- 需要在所有月份重复此操作
这是我的代码,它需要更多的人工干预和时间。请帮忙。
select distinct date from #sample order by DATE
declare @processingdate varchar(6),@from varchar(6),@to varchar(6)
set @processingdate = '201302'
set @from = '201303'
set @to = '201305'
select distinct id into #Source from #sample where DATE = @processingdate
select distinct id into #lookup from #sample where DATE between @from and @to
select @processingdate,count(*) from #Source where ID not in (select * from #lookup)
谢谢
【问题讨论】:
-
您能否添加一些示例数据来展示您想要的结果?
-
有没有可以利用的索引?
标签: sql sql-server sql-server-2008 sql-server-2008-r2 query-optimization