请求,按月轮询SELECT查询。

x2xnet 2019-01-09 02:22:49

变量:r20190102

解释:r+年+日期

求救:下面贴出来的是一天的数据,想查询 r20190101- r20190131一个月的表;

以下是一天的查询脚本(一天一张表),如何一个月汇总,求助。

如何做变量循环SELECT?



select *
from r20190102 r
where
INSTR(r.VC_MARKS,'P')>0
and INSTR(r.c_category,'1')>0
and INSTR(r.n_issue_type,'5')>0

...全文
96 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-01-09
  • 打赏
  • 举报
回复
DECLARE @sql NVARCHAR(MAX)
SELECT @sql=ISNULL(@sql,'')+CASE WHEN sv.number=1 THEN '' ELSE '
UNION ALL
' END +
'SELECT * 
from r201901'+RIGHT('00'+LTRIM(sv.number),2)+' r
where 
    INSTR(r.VC_MARKS,''P'')>0
    and INSTR(r.c_category,''1'')>0
    and INSTR(r.n_issue_type,''5'')>0'
FROM [master].dbo.spt_values AS sv
WHERE sv.[type]='P' AND sv.number BETWEEN 1 AND 31

--打印不全是因为有限制,实际是没有问题的
PRINT @sql
EXEC (@sql)

Dear SQL(燊) 2019-01-09
  • 打赏
  • 举报
回复

declare @date datetime='2019-01-01',@enddate datetime='2019-1-31'
declare @tablestr nvarchar(100)='',@sql nvarchar(max)


if object_id('tempdb..#data') is not null drop table #data;

select top 0 * into #data from r20190101

while @date<=@enddate begin

	set @sql='
	insert into #data
	select * 
	from r'+convert(nvarchar(12),@date,112)+' r
	where 
	  INSTR(r.VC_MARKS,''P'')>0
	 and INSTR(r.c_category,''1'')>0
	 and INSTR(r.n_issue_type,''5'')>0
	'
	exec (@sql)

	set @date=dateadd(day,1,@date)
end

select * from #data

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧