加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

[SQLServer]数据库行列互换

发布时间:2020-12-12 15:38:01 所属栏目:MsSql教程 来源:网络整理
导读:?面试的时候遇到的数据库SQL问题,没写过,然后研究了一下,现将结果记录下来,方便以后查询。 ? 题目1:将表tbltest1的行列互换 ? 表结构: student???? kemu? fenshu student1??? 语文??? 80 student1??? 数学??? 90 student1??? 英语??? 85 student2???
?面试的时候遇到的数据库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

?

?

?

?=====================================================================

传说通用的, 如下:

?

?

?

?=====================================================================

?

?

Oracle's:

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读