[SQLServer]数据库行列互换

简介:
面试的时候遇到的数据库SQL问题,没写过,然后研究了一下,现将结果记录下来,方便以后查询。
 
题目1:将表tbltest1的行列互换
 
表结构:
student     kemu  fenshu
student1    语文    80 
student1    数学    90 
student1    英语    85 
student2    语文    85 
student2    数学    92 
student2    英语    82
 
变成:
student  语文    数学   英语
student1   80     90     85 
student2   85     92     82
 
SQLserver的sql语句:
declare @sql  varchar(4000)  
set @sql =  'select student'  
select @sql = @sql +  ',sum(case kemu when ' ''+ kemu + '' ' then fenshu else 0 end)['+ kemu+ ']' 
   from ( select  distinct kemu  from tbltest1)  as a  
set @sql = @sql +  ' from tbltest1 group by student'  
exec(@sql)
或者
select student, sum( case kemu  when  '语文'  then fenshu  else 0  end) 语文, sum( case kemu  when  '数学'  then fenshu  else 0  end) 数学, sum( case kemu  when  '英语'  then fenshu  else 0  end) 英语  from tbltest  group  by student
 
注:个人觉得上面的好。如果一两个选项可以使用下面的sql,如果选项多上面的sql就显的方便的多。
 
2005的话好像还有个函数可以用,等研究好了再发上来。
 
题目2:合并
 
表结构tbltest2:
id strings
1   my 
1   name
1   is
1   xudayu
2   hello
2   world
 
转化成:
id   strings
 1   my name is xudayu 
 2   hello world 
 
SQLServer的sql语句:
 
--创建一个合并的函数  
create function fliehebin(@id  int)  
returns  varchar(5000)  
as  
begin  
declare @ str  varchar(5000)  
set @ str= ''  
select @ str=@ str +  cast(strings  as  varchar(50)) + ' '  from tbltest2  where id=@id  
set @ str= subString(@ str,1, len(@ str))  
return(@ str)  
end  
go  
--调用自定义函数得到结果 
select  distinct id,dbo.fliehebin(id)  from tbltest2
 
Mysql没研究,其他数据库,如Oracle的因为没有环境研究不了,哪位会的,回复上来呀!


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/84355,如需转载请自行联系原作者

相关文章
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
893 152
|
4月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
471 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
4月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
5月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
316 5
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
6月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1130 0
|
6月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
533 0
|
9月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
324 13
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
8月前
|
SQL 人工智能 数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
595 0
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库