易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 将列转换为行,相当于将表结构旋转90度

将列转换为行,相当于将表结构旋转90度
T_Student 表
Stud_ID
Sex
Name
1

Tom
2

Anne
3

Jack
 
执行: Exec proColumnToRow ’T_Student’,’Name’,’ New_ID’
 
转换后的表
 
New_ID
Tom
Anne
Jack
Stud_ID
1
2
3
Sex



 
--将列转换为行
create proc proColumnToRow
       @tbname sysname, --要处理的表名
       @fdname sysname, --某一列的值转换为新表的列
       @new_fdname sysname='' --将源表的列转换为新列的值。@new_fdname为新列的列名
as
declare @s1 varchar(8000) , @s2 varchar(8000),
        @s3 varchar(8000) , @s4 varchar(8000),
        @s5 varchar(8000) , @i varchar(10)
select
 @s1 = '' , @s2 = '' , @s3 = '' , @s4 = '' , @s5 = '' , @i = '0'
select
 @s1 = @s1 + ',@' + @i + ' varchar(8000)',
       @s2 = @s2 + ',@' + @i + '=''' + case isnull(@new_fdname , '') when '' then ''
       else @new_fdname + '=' end + '''''' + name + '''''''',
       @s3 = @s3 + 'select
 @' + @i + '=@' + @i + '+'',['' + cast(' + @fdname +
       ' as varchar)+'']=''''''+cast([' + name + '] as varchar)+'''''''' from [' + @tbname + ']',
       @s4 = @s4 + ',@' + @i + '=''select
 ''+@' + @i,
       @s5 = @s5 + '+'' union all ''+@' + @i,
       @i=cast(@i as int)+1
from syscolumns
where object_id(@tbname)=id and name<>@fdname
 
select
 @s1=substring(@s1,2,8000),
       @s2=substring(@s2,2,8000),
       @s4=substring(@s4,2,8000),
       @s5=substring(@s5,16,8000)
exec('declare ' + @s1 + 'selec


相关文档:

高效SQL查询之索引(I)

大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑 IO( 至于为什么,回头补一篇 ) 。我们常说,“要建彪悍的索引”、“要写高效的 SQL ”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑 IO 。
1.1      where 条件的列上都得有统计信 ......

SQL查表名、字段名、表说明、字段说明

SQL 查看所有表名:
select name from sysobjects where type='U'
查询表的所有字段名:
Select name from syscolumns Where ID=OBJECT_ID('表名')
select * from information_schema.tables
select * from information_schema.views
select * from information_schema.columns
ACCESS
查看所有表名:
se ......

在打包程序中自动安装SQL Server数据库

1、创建安装项目“Setup1”安装项目
在“文件”菜单上指向“添加项目”,然后选择“新建项目”。
在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在&ldquo ......

SQL Server 2005 查询分析中删除数据库

USE   master  
GO
DECLARE   @dbname   sysname  
SET  @dbname='TEST' --这个是要删除的数据库库名  
DECLARE @s  NVARCHAR(1000)  
DECLARE tb CURSOR local FOR  
SELECT s='KILL '+CAST(spid AS NVARCHAR)&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号