• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQLServer行转列实现思路记录
    最近面试遇到了一道面试题,顿时有点迷糊,只说出了思路,后来百度了一下,整理了一下思路,于是记录下来,方便以后学习。(面试题请参见附件)

    相关的数据表:

    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
    您可能感兴趣的文章:
    • mysql 行转列和列转行实例详解
    • sql语句实现行转列的3种方法实例
    • MySQL存储过程中使用动态行转列
    • mssql 数据库表行转列,列转行终极方案
    • Sql Server 2000 行转列的实现(横排)
    • SQL查询语句行转列横向显示实例解析
    • sql动态行转列的两种方法
    • table 行转列的sql详解
    • SQL行转列和列转行代码详解
    • SQL基础教程之行转列Pivot函数
    上一篇:.net+mssql制作抽奖程序思路及源码
    下一篇:SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQLServer行转列实现思路记录 SQLServer,行转列,实现,思路,