sql行转列解决方案

sql行转列解决方案

ID:6605595

大小:32.50 KB

页数:7页

时间:2018-01-20

sql行转列解决方案_第1页
sql行转列解决方案_第2页
sql行转列解决方案_第3页
sql行转列解决方案_第4页
sql行转列解决方案_第5页
资源描述:

《sql行转列解决方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、sql行转列解决方案SQLcode/*普通行列转换假设有张学生成绩表(tb)如下:NameSubjectResult张三语文  74张三数学  83张三物理  93李四语文  74李四数学  84李四物理  94*/-------------------------------------------------------------------------/*想变成姓名语文数学物理-------------------------------------------李四748494张三748393*/c

2、reatetabletb(Namevarchar(10),Subjectvarchar(10),Resultint)insertintotb(Name,Subject,Result)values('张三','语文',74)insertintotb(Name,Subject,Result)values('张三','数学',83)insertintotb(Name,Subject,Result)values('张三','物理',93)insertintotb(Name,Subject,Result)values

3、('李四','语文',74)insertintotb(Name,Subject,Result)values('李四','数学',84)insertintotb(Name,Subject,Result)values('李四','物理',94)go--静态SQL,指subject只有语文、数学、物理这三门课程。selectname姓名,max(casesubjectwhen'语文'thenresultelse0end)语文,max(casesubjectwhen'数学'thenresultelse0end)数学

4、,max(casesubjectwhen'物理'thenresultelse0end)物理fromtbgroupbyname/*姓名语文数学物理-------------------------------------------李四748494张三748393*/--动态SQL,指subject不止语文、数学、物理这三门课程。declare@sqlvarchar(8000)set@sql='selectNameas'+'姓名'select@sql=@sql+',max(caseSubjectwhen'''

5、+Subject+'''thenResultelse0end)['+Subject+']'from(selectdistinctSubjectfromtb)asaset@sql=@sql+'fromtbgroupbyname'exec(@sql)/*姓名数学物理语文-------------------------------------------李四849474张三839374*/--------------------------------------------------------------

6、-----/*加个平均分,总分姓名语文数学物理平均分总分--------------------------------------------------------------------------李四74849484.00252张三74839383.33250*/--静态SQL,指subject只有语文、数学、物理这三门课程。selectname姓名,max(casesubjectwhen'语文'thenresultelse0end)语文,max(casesubjectwhen'数学'thenres

7、ultelse0end)数学,max(casesubjectwhen'物理'thenresultelse0end)物理,cast(avg(result*1.0)asdecimal(18,2))平均分,sum(result)总分fromtbgroupbyname/*姓名语文数学物理平均分总分--------------------------------------------------------------------------李四74849484.00252张三74839383.33250*/--动

8、态SQL,指subject不止语文、数学、物理这三门课程。declare@sql1varchar(8000)set@sql1='selectNameas'+'姓名'select@sql1=@sql1+',max(caseSubjectwhen'''+Subject+'''thenResultelse0end)['+Subject+']'from(selectdistinctSubjectfromtb)asaset

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。