在线,急用!!!

zhigangsun 2003-08-21 01:37:48
能不能动态的决定查询所选择得列例如;
我有一张表格式如下:
a_1,a_2...a_12分别表示一年中12个月份得值,客户要求能够按时间断查询。比如他选1到5则查询a_1..a_5,选2到8则查询a_2...a_8该怎么做呢?
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-08-21
  • 打赏
  • 举报
回复
declare @ varchar(8000)
set @=''
select @=@+rtrim(name)+',' from syscolumns where id=object_id('你的表名') and name like 'a_%'
and substring(name,3,2) between 8 and 12
set @=left(@,len(@)-1)
exec('select '+@+' from 你的表名')


注意: between 后面是开始月份和结束月份。
愉快的登山者 2003-08-21
  • 打赏
  • 举报
回复
create procedure p1 (@bmon int, @emon int)
as
declare @i int
declare @sql varchar(300)
select @s = count(*) from syscolumns as A left join sysobjects as B
on A.id = B.id
where B.name = 'yourtablename'
set @sql = 'select '''''
set @i = 1
while exists (select * from syscolumns as A left join sysobjects as B
on A.id = B.id where B.name = 'yourtablename' and A.colorder >= @i)
begin
select top 1 @sql = @sql + ',' + A.name, @i = A.colorder from syscolumns as A left join sysobjects as B
on A.id = B.id where B.name = 'yourtablename' and A.colorder >= @i
and cast(substring(A.name,3,(len(A.name)-2)) as int) >= @bmon
and cast(substring(A.name,3,(len(A.name)-2)) as int) <= @emon
and left(A.name,20 = 'a_'
set @i = @i +1
end
set @sql = @sql + ' from yourtablename'
exec (@sql)


CrazyFor 2003-08-21
  • 打赏
  • 举报
回复
前台组织好SQL语句,把相应的月分的字段名做为得选框的值,

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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