当前位置:  数据库>sqlserver

SQLServer行转列实现思路记录

    来源: 互联网  发布时间:2014-10-13

    本文导语:  最近面试遇到了一道面试题,顿时有点迷糊,只说出了思路,后来百度了一下,整理了一下思路,于是记录下来,方便以后学习。(面试题请参见附件) 相关的数据表: 1.Score表  2.[User]表  SQL语句如下: --方法一:静态SQL ...

最近面试遇到了一道面试题,顿时有点迷糊,只说出了思路,后来百度了一下,整理了一下思路,于是记录下来,方便以后学习。(面试题请参见附件)

相关的数据表:

1.Score表
 
2.[User]表
 
SQL语句如下:

--方法一:静态SQL
代码如下:

SELECT * FROM
(SELECT UID,Name, Score,ScoreName FROM Score,[User] WHERE Score.UID=[User].ID) AS SourceTable
PIVOT(AVG(Score)FOR ScoreName IN ([英语], [数学])) AS a

--方法二:动态SQL
代码如下:

DECLARE @s NVARCHAR(4000)
SELECT @s = ISNULL(@s + ',', '') + QUOTENAME(ScoreName)
FROM (select distinct ScoreName from Score) as A ---列名不要重复

Declare @sql NVARCHAR(4000)
SET @sql='
select r.* from
(select UID,Name,ScoreName,Score from Score,[User] where Score.UID=[User].ID) as t
pivot
(
max(t.Score)
for t.ScoreName in ('+@s+')
) as r'
EXEC( @sql)

--方法三:Case When
代码如下:

select
row_number() OVER(ORDER BY [User].ID) as 编号,
UID as 用户编号,
Name as 姓名,
max(case ScoreName when '英语' then Score else 0 end) 英语,
max(case ScoreName when '数学' then Score else 0 end) 数学
from Score,[User] WHERE Score.UID=[User].ID
group by UID,[User].ID,Name

    
 
 

您可能感兴趣的文章:

  • sqlserver数据库出现置疑的解决思路
  • SQLserver删除某数据库中所有表实现思路
  • 简单实现SQLServer转MYSQL的方法
  • JSP网页向SQLSERVER同时提交7万多字,怎么实现!
  • SqlServer 序号列的实现方法
  • sqlserver中触发器+游标操作实现
  • SQLServer用存储过程实现插入更新数据示例
  • SqlServer实现类似Oracle的before触发器示例
  • c#实现sqlserver事务处理示例
  • sqlserver 手工实现差异备份的步骤
  • C#操作图片读取和存储SQLserver实现代码
  • 编程技术其它 iis7站长之家
  • sqlserver实现oracle的sequence方法
  • asp.net+ajax+sqlserver自动补全功能实现解析
  • sqlserver数据库使用存储过程和dbmail实现定时发送邮件
  • C#控制台程序实现开启、关闭SQLServer服务的代码分享
  • sqlserver 存储过程动态参数调用实现代码
  • SQLserver 实现分组统计查询(按月、小时分组)
  • 利用脚本自动安装SQLServer的实现步骤分析
  • SQLServer 2005 实现数据库同步备份 过程-结果-分析
  • sqlserver 触发器学习(实现自动编号)
  • SQLServer 跨库查询实现方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 连接sqlserver的url是jdbc:microsoft:sqlserver://192.168.0.100:1433,他连那一个数据库呢?
  • (100分)用Microsoft jdbc Driver for sqlserver2000(type4)访问sqlserver2k的问题,help!
  • 通过SQLSERVER重启SQLSERVER服务和计算机的方法
  • 怎样用文JDBC for sqlserver访问SQLSERVER 数据库请大侠给出一个完整的程序代码
  • (100分)jdbc连接sqlserver 200出错.[SQLServer 2000 Driver for JDBC]Error establishing socket.
  • 如何连接sqlserver2000数据库
  • 深入JDBC sqlserver连接写法的详解
  • how to 连接到sqlserver2000?
  • 请问如何直接sqlserver?
  • SQLServer JDBC Driver
  • 在sqlserver2000时中文问题。
  • 设置密码保护的SqlServer数据库备份文件与恢复文件的方法
  • 如何使用JSP 连接SQLSERVER数据库,请不吝赐教!(在线等,急救!)
  • 求助!SQLServer2000 JDBC Driver 不能加载?
  • Resin+Jsp+Sqlserver2000的问题!在线等候!
  • applet用jdbc链接SQLServer 2000的问题
  • 请问连接SQLServer 的驱动器是什么呢?
  • jdbc:microsoft:sqlserver://localhost:1433;DatabaseNameOPTIONAL=webmail???
  • 如何用SQLServer2k-JDBC连接数据库?
  • shell脚本读取rrd文件将数据插入sqlserver数据库中


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3