select[top n]中关于查询纪录条数n的问题。可否为变量?

baximu 2003-05-08 03:06:02
表里面有一个字段year_month 纪录数据写入时间
要求只保留12个月的,
思路:从里面取出year_month纪录的个数count
按照升序排列,取出前(count-12)个。
可是再写存储过城时始终不通过,是不是TOP后面不能带一个变量啊?
如果不能哪位更好的办法?
declare @nCountMonth int//总共记录个数
declare @nTempCount int//去掉12个月还剩下的个数
select @nCountMonth = count(distinct year_month) from month
if @nCountMonth > 12
begin
select @nTempCount = @nCountMonth -12
end
select distinct top @nTempCount year_month from MONTH //有问题??
order by year_month ASC
...全文
23 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
blactte 2003-05-08
保留12个月的与保留前12条记录好象不一样吧
如果保留前12记录用yoki(小马哥) 的方法
如果要求保留12个月内的数据
使用select * from from month
where datediff(month,year_month,getdate())<12
保留12月以内的数据
回复
CrazyFor 2003-05-08

declare @nCountMonth int//总共记录个数
declare @nTempCount int//去掉12个月还剩下的个数
select @nCountMonth = count(distinct year_month) from month
if @nCountMonth > 12
begin
select @nTempCount = @nCountMonth -12
end
exec('select distinct top '+cast(@nTempCount as varchar)+' year_month from MONTH order by year_month ASC')
回复
happydreamer 2003-05-08
exec('select distinct top '+ @nTempCount +' year_month from MONTH
order by year_month ASC')
用动态sql做
回复
superzuoluo 2003-05-08
declare @sql varchar(200)

set @sql = 'select distinct top ' + @nTempCount + ' year_month from MONTH order by year_month ASC'
EXEC(@sql)
回复
yoki 2003-05-08
exec('select distinct top '+ @nTempCount +' year_month from MONTH
order by year_month ASC')
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-08 03:06
社区公告
暂无公告