麻烦高手改下代码。非常感谢 20xiaozong1984]

发布时间:2016-12-7 1:53:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"麻烦高手改下代码。非常感谢 20xiaozong1984]",主要涉及到麻烦高手改下代码。非常感谢 20xiaozong1984]方面的内容,对于麻烦高手改下代码。非常感谢 20xiaozong1984]感兴趣的同学可以参考一下。

代码作用描述: 依次得出 某张表中所有字段 非NULL的有效记录数。代码可以执行,但是显示结果 只有 COUNT出来的数字 我想要的结果是如下: ID 9898 NAME 9723 XINGBIE 9898 NIANLIANG 7433 BEIZHU  1223 就是最后输出 字段名 有效记录数  并且能现在在一个网格内。 可以直接粘贴进 EXCEL。 代码如下: 高手帮忙看下 ALTER PROC [dbo].[cx_tab] (@tablename varchar(100)) AS begin set nocount on  declare  @sqlstring varchar(200) declare  @table_col varchar(100) declare  cur_table cursor for select name from syscolumns where id in (select id from sysobjects where [email protected]) open cur_table fetch next from cur_table into @table_col while @@fetch_status=0 begin select @sqlstring ='select count(*) from [email protected]+' where  [email protected]_col+' is not NULL ' exec (@sqlstring) fetch next from cur_table into @table_col --DEALLOCATE CUR_table end DEALLOCATE CUR_table set nocount off end 我新手,我是做ORACLE的,SQLSERVER 2005环境,麻烦高手给改一下,我分不多。如果觉得分不够,请高手私下联系我

自己顶一下,希望不要沉底

游标没用过,帮顶

ALTER PROC [dbo].[cx_tab] (@tablename varchar(100))  AS  begin  set nocount on  declare  @sqlstring varchar(200)  declare  @table_col varchar(100)  declare  cur_table cursor for  select name from syscolumns where id in (select id from sysobjects where [email protected])  open cur_table  fetch next from cur_table into @table_col  while @@fetch_status=0  begin  select @sqlstring ='select [email protected]_col+' ,count(*) from [email protected]+' where  [email protected]_col+' is not NULL '  exec (@sqlstring)  fetch next from cur_table into @table_col  --DEALLOCATE CUR_table  end  DEALLOCATE CUR_table  set nocount off  end 

修改下  ALTER PROC [dbo].[cx_tab] (@tablename varchar(100))  AS  begin  set nocount on  declare  @sqlstring varchar(200)  declare  @table_col varchar(100)  declare  cur_table cursor for  select name from syscolumns where id in (select id from sysobjects where [email protected])  open cur_table  fetch next from cur_table into @table_col  while @@fetch_status=0  begin  select @sqlstring ='select [email protected]_col+' ,count(*) from [email protected]+' where  [email protected]_col+' is not NULL group by [email protected]_col+''  exec (@sqlstring)  fetch next from cur_table into @table_col  --DEALLOCATE CUR_table  end  DEALLOCATE CUR_table  set nocount off  end 

3楼的朋友, 你的 这个语句,执行出来不是我想要的结果。 select @sqlstring ='select [email protected]_col+' ,count(*) from [email protected]+' where  [email protected]_col+' is not NULL group by [email protected]_col+''  我要的是 一个字段 一共有多少有效记录行数。你这个分组出来的不是想要的结果撒。 我要的结果是 例如一个 TABA (ID,NAME,XINGMING,XINGBIE) 我要的结果是   ID 多少行有效记录 NAME 多少行有效记录 XINGMING 多少行有效记录 XINGBIE 多少行有效记录 一个字段名只出现一次。后面跟一个COUNT出来的数字撒。

不用游标行不? ALTER PROC [dbo].[cx_tab] (@tablename varchar(100))  AS  declare @sql varchar(8000) select    @sql=isnull(@sql+' union all ','')   +'select '''    +name+''',count(1) as cnt from [email protected]+' where '+name+' is not null' from syscolumns  where id=object_id(@tablename) exec (@sql) go --exec cx_tab 'tb'

DECLARE @sql        VARCHAR(100) DECLARE @table      VARCHAR(100) SET @table = 'tb'--改为你的表名 SET @sql = '' SELECT  @sql = @sql + ',COUNT(' + name + ') AS [' + name + ']' FROM sys.columns WHERE OBJECT_NAME(object_id) = @table SELECT @sql = STUFF(@sql,1,1,'') SELECT @sql EXEC ('SELECT ' + @sql + ' from ' + @table)

这个MSSQL语句我已经 修改好了。 我加了一张临时表。 我把组合需要的内容 插入到临时表里面。 问题已经解决了。 非常感谢大家。多向大家学习。

上一篇:数据库创建后不能创建证书 20分,无满意结帖,结帖人sfgwkpe]
下一篇:数据库迁移问题 20alan_lau]

相关文章

相关评论