麻烦高手改下代码。非常感谢解决方案
麻烦高手改下代码。非常感谢
代码作用描述: 依次得出 某张表中所有字段 非NULL的有效记录数。代码可以执行,但是显示结果 只有 COUNT出来的数字
我想要的结果是如下:
ID 9898
NAME 9723
XINGBIE 9898
NIANLIANG 7433
BEIZHU 1223
就是最后输出 字段名 有效记录数 并且能现在在一个网格内。 可以直接粘贴进 EXCEL。
代码如下: 高手帮忙看下
[code=SQL][/code]
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 name=@tablename)
open cur_table
fetch next from cur_table into @table_col
while @@fetch_status=0
begin
select @sqlstring ='select count(*) from '+@tablename+' where '+@table_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
[code=SQL][/code]
我新手,我是做ORACLE的,SQLSERVER 2005环境,麻烦高手给改一下,我分不多。如果觉得分不够,请高手私下联系我
------解决方案--------------------
不用游标行不?
代码作用描述: 依次得出 某张表中所有字段 非NULL的有效记录数。代码可以执行,但是显示结果 只有 COUNT出来的数字
我想要的结果是如下:
ID 9898
NAME 9723
XINGBIE 9898
NIANLIANG 7433
BEIZHU 1223
就是最后输出 字段名 有效记录数 并且能现在在一个网格内。 可以直接粘贴进 EXCEL。
代码如下: 高手帮忙看下
[code=SQL][/code]
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 name=@tablename)
open cur_table
fetch next from cur_table into @table_col
while @@fetch_status=0
begin
select @sqlstring ='select count(*) from '+@tablename+' where '+@table_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
[code=SQL][/code]
我新手,我是做ORACLE的,SQLSERVER 2005环境,麻烦高手给改一下,我分不多。如果觉得分不够,请高手私下联系我
------解决方案--------------------
不用游标行不?
- SQL code
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 '+@tablename+' where '+name+' is not null' from syscolumns where id=object_id(@tablename) exec (@sql) go --exec cx_tab 'tb'
------解决方案--------------------
- SQL code
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)