假设log表中有个日期字段名为datecreate proc GetLog
asBEGINdeclare @sql nvarchar(4000)set @sql ='select [date]'select @sql = @sql +',sum(case when datediff(d,[date],''' + convert(varchar(10),[date]) +''') = 0 then 1 else 0 end) as ' + RouteName
from log
select @sql = @sql +' from log group by [date] 'exec (@sql)
end
asBEGINdeclare @sql nvarchar(4000)set @sql ='select [date]'select @sql = @sql +',sum(case when datediff(d,[date],''' + convert(varchar(10),[date]) +''') = 0 then 1 else 0 end) as ' + RouteName
from log
select @sql = @sql +' from log group by [date] 'exec (@sql)
end
解决方案 »
- .net 利用word模板生成word文件后,winword进程关不掉
- updatePanel 刷新
- __dopostback执行两次的问题
- 用户点击button后,满足一定条件后,出现确定或取消的对话框
- 调用静态类的静态方法与通过接口(interface)调用对应方法的性能比较会是怎样的呢?
- 请教一个ASP.NET的问题
- 杭州今天下雨,散分,随便在问一问题(2)。
- 怎么实现简体和繁体的转换?
- asp.net在girdview中动态调整列名和数值字段怎么实现?
- 为什么我无法建立Asp.net WEB 应用程序的项目?
- 求今年规划摸版
- 我在hashtable.add中的object value中插入了个arraylist...
我从Route表里把这些数据取出来
作为另一张表的字段的时候
我怎么知道数据类型是什么呢?
难道再写个函数?if @name = '短信'
begin
set @type = 'nvarchar(50)'
end
return @type
。
。
。
然后再在存储过程里再这样
set @sql='alter table add '+@name+' '+@type+''
exec(@sql)这样???
LZ你这个存储过程是用在什么地方的?
当Route表插入一条数据的时候?
那么当Route表删除一条数据的时候呢?
declare @sql varchar(2000)
if not exists(select 1 from sysobjects where name ='log' and xtype ='u')
begin
set @sql =' create table log(id int ,date datetime'
select @sql = @sql +','+ routename +' int ' from routeset @sql = @sql + ',总计 int )'execute (@sql)
end else
begin declare rs cursor for select RouteName from Route
where RouteName not in(
select B.name from sysobjects as A
inner join syscolumns as B on A.id = B.id
where A.name ='log' and A.xtype ='u' )
declare @name nvarchar(20)
open rs
fetch next from rs into @name while @@fetch_status = 0
begin
exec('alter table log add ' + @name +' int ')
fetch next from rs into @name
end close rs
deallocate rs
end
这是总计不在最后的