怎样将sqlserver数据库里的列字段当做列名并依此分组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样将sqlserver数据库里的列字段当做列名并依此分组?相关的知识,希望对你有一定的参考价值。

如图,我是按照省份和年份当做外键存入数据库的,现在想要把它查出来,把年份当做列名该怎么做?

参考技术A SELECT 地区,
(case when 列名 = 2004 THEN 返回值的列 END) ,
(case when 列名 = 2009 THEN 返回值的列 END) ,
(case when 列名 = 2014 THEN 返回值的列 END)
FROM 表名

是要这样吗?
参考技术B 参考这里case when:
http://zhidao.baidu.com/question/1604798500283834627.html?oldq=1
还有PIVOT
http://zhidao.baidu.com/question/982508961639700259.html?oldq=1本回答被提问者采纳

SQLServer修改数据列

修改数据列

在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的.

以下几种情况下我们并不能直接修改数据列:

1、用于索引的列。 
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束的列。 
3、与默认值(由 DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列。 
4、绑定到规则的列。 

使用SSMS数据库管理工具修改列

1、连接数据库,打开要修改的数据库,选择数据表-》右键点击-》选择设计。

2、在新打开的窗口视图中-》点击要修改的行-》可以修改列名、列类型、是否可空、属性等-》修改完成点击保存按钮(或者ctrl+s)。

使用T-SQL脚本修改列

修改列名

语法:exec sp_rename  表明.旧列名,新列名; 

示例:exec sp_rename \'[test1].height6\',\'height7\'; 

修改列数据类型

语法:alter table 数据库名.dbo.表名 alter column 列名 类型 [约束];  

示例:alter table [testss].dbo.[test1] alter column height7 int null;  

修改列是否可空

语法:alter table 数据库名.dbo.表名 alter column 列名 类型 约束;  

示例:alter table [testss].dbo.[test1] alter column height7 int not null;

修改列默认值

如果默认值不存在

语法:alter table 数据库名.dbo.表名 add constraint 约束名 default 默认值 for 列名;

示例:alter table [testss].dbo.[test1] add constraint df_h default 1 for height7;

如果默认值存在

语法:

--第一步判断默认值否存在,如果存在就删除,如果不存在则不删除
if exists (select * from sys.check_constraints where object_id = object_id(默认值约束名) and parent_object_id = object_id(表名))
alter table 表名 drop constraint 默认值约束名

--第二步添加默认值

alter table 表名 add constraint  约束名 default 默认值 for 列名;

示例:

--第一步判断约束是否存在,如果存在就删除,如果不存在则不删除
if exists (select * from sys.check_constraints where object_id = object_id(\'df_h\') AND parent_object_id = object_id(\'[testss].dbo.[test1]\'))
alter table [testss].dbo.[test1] drop constraint df_h

--第二步添加默认值

alter table [testss].dbo.[test1] add constraint df_h default 2 for height7;

总结

在开发或者生产数据库中,数据列一经建好,不要轻易改动,随意改动可能会引起数据库的级联操作失败和代码错误。

 

以上是关于怎样将sqlserver数据库里的列字段当做列名并依此分组?的主要内容,如果未能解决你的问题,请参考以下文章

sql server修改列名语句

sqlserver count,count(*),count(列名) 详解

SQL中怎样修改一个表的列名呢??

SQLServer如何修改一列的列名呢?

SQLServer如何修改一列的列名呢?

【原】Oracle 如何修改列的数据类型