微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

例如:

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

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

 

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

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

 

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

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

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

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

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

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

...
print @sql

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐