create procedure yourP
@month varchar(2)
asexec ('select sum(score' + @month + ') from data_month group by jgid')
-- 如:
--- exec yourP '02'
@month varchar(2)
asexec ('select sum(score' + @month + ') from data_month group by jgid')
-- 如:
--- exec yourP '02'
解决方案 »
- 建立一个约束的问题(mysql)
- 请问大家帮我看一下,我的问题需不需要使用数据库啊??
- 求救:作为源列 9(“备注”)的数据对于所指定的缓冲区来讲太大。
- 怎么判断一个字符串里含有字母以外得字符
- insert into POWER_Function values(1,'首页');第一个字段为自加的主键。1原来为第一行,后来删除过,现在想再插入却报错
- 为什么SQL2008安装完成后没有客户端
- 关于存储过程的问题
- 求助一条SQL语句?再线等待
- sqlserver新手提问,有没有能调试存储过程的工具像oracle的pldev那样的
- 如何实现sql server的复制
- 在线等待!凡回答者都有分!!!
- 就竟是怎么回事啊!一条查询语句,检索某些关键字的时候能正常执行,但某些关键字要么超时,要么报内存溢出!!谁能帮我??
@month int
as
declare @m varchar(2)
set @m= right(cast((100+@m) as varchar),2)exec ('select sum(score' + @m + ') from data_month group by jgid')
-- 如:
--- exec yourP 2
1、动态执行法
在存贮过程中构造SQL语句然后动态执行declare @Sql varchar(500)
Select @Sql='Select sum(score' +cast(month(getdate()) as varchar(2))+') from data_month group by jgid'Execute(@Sql)
2、在ASP中直接构造SQL语句再调用RecorderSet的Open方法
3、在存贮过程中使用较多 的IF ELSE每个月对应一条SQL语句,如
if (Month(GetDate())=1)
Select sum(Score1) from data_month group by jgid
else if(Month(GetDate())=2)
.................
@intSum int OUTPUT /*返回值int类型改为你的类型*/
as
BEGIN
declare @strSql nvarchar(100)
select @strsql = 'select @iSum = sum('
select @strsql = @strsql + case
when month(getdate())<10
then 'score0' + convert(nvarchar(1),month(getdate()))
else 'score' + convert(nvarchar(1),month(getdate())) end
select @strsql = @strsql + ') from data_month '
declare @pp nvarchar(100)
select @pp = '@iSum int output'
exec sp_executesql @strsql,@pp,@iSum = @intSum output
End
else 'score' + convert(nvarchar(1),month(getdate())) end
改为
else 'score' + convert(nvarchar(2),month(getdate())) end