SQL 收集

本文介绍如何使用SQL语句进行表结构的修改,包括表名、字段名及类型等,并提供了一种方法实现从行列数据到列行数据的转换,适用于成绩表等特定场景。
--修改表名称
EXEC sp_rename 旧表名,新表名
--修改表字段名称
EXEC sp_rename '表.旧字段','新字段','COLUMN'
--修改表字段类型
alter table 表 alter column 字段 类型(如:int)
--查询当前数据库名
select name from [master].[dbo].[sysdatabases] Where DbId=(Select Dbid From [Master].[dbo].[SysProcesses] Where Spid = @@spid)
--查询表的字段
select * from Sys.syscolumns where id=object_id('表')
--查询是否存在用户表
if exists(select * from sys.sysobjects where id=object_id('表名') and objectproperty(id,N'IsUserTable')=1)
print 'exists'

 

 

SQL语句之普通行列转换     
      
  假设有张学生成绩表(tb_rowtocol)如下   
  Name   Subject   Result   
  张三   语文  73   
  张三   数学  83   
  张三   物理  93   
  李四   语文  74   
  李四   数学  84   
  李四   物理  94   
    
  想变成     
  姓名   语文   数学   物理   
  张三   73  83  93   
  李四   74  84  94   
    
  declare   @sql   varchar(4000)   
  set   @sql   =   'select   Name   as   '   +   '姓名'   
  select   @sql   =   @sql   +   '   ,   sum(case   Subject   when   '''+Subject+'''   then   Result   end)   ['+Subject+']'   
  from   (select   distinct   Subject   from   rowtocol)   as   a   
  set   @sql   =   @sql   +   '   from   rowtocol   group   by   name'   
  exec(@sql)     
      
  如果上述两表互相换一下:即   
  表名(cj)   
  姓名   语文   数学   物理   
  张三   73  83  93   
  李四   74  84  94   

转载于:https://www.cnblogs.com/ulex/archive/2009/07/21/1527943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值