您的位置:首页 > 数据库

SQLserver2000中 针对查询结果中存在不固定字段时 如何排除固定字段只查询不固定字段

2009-12-31 15:17 120 查看
由于手头工作需要出一张报表。报表内容是按月统计N种费用科目汇总数目。用户可以选择时间范围。如果选择的时间范围跨度是2年,那么就需要有24个月份字段。

例如:

费用科目代码 费用科目名称 2008年1月 2008年2月 ... 2009年12月

    ...                   ...              ...                ...                   ...

 

这里的月份字段就是不固定字段。会随着用户所选择的时间范围的变化而变化,月份以外的字段则是固定字段.

假设除了这部分不固定的字段之外 同时还有大量固定的字段。那么如果有需求只选择不固定的这些月份字段进行查询时,怎么把剩余的那些固定字段排除在外呢。

 

首先分析一下。查询结果中,字段由固定的这部分 和不固定的两部分组成。select * 可以得到所有字段,固定字段我们是已知的,所以从理论上来说取得剩余的不固定字段肯定是可能的。

查询了一下sqlserver2000的帮助文档,发现INFORMATION_SCHEMA.COLUMNS这个系统视图很有帮助。 

它给出例句是select column_name from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 表名/视图名

作用是返回表或视图的字段名,加以变化就可以这样:

declare @sql varchar(8000)
set @sql=''

select @sql = column_name+','+@sql from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 表名/视图名
and column_name <> 要排除固定字段名1
and  column_name <> 要排除固定字段名2

...
print @sql

这里打印出来可以看到 @sql输出的就是剩下所需要字段 并且已经排列成按逗号分隔的形式。

剩下的工作只要自己按需求组织一下语句就可以实现了。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐