热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLServer表交叉显示及实现方法

假设有张学生成绩表(t)如下:NameSubjectResult张三语文73张三数学83张三物理93李四语文74李四数学84李四物理94想变成姓名语文数学物理张三738393李四748494代码createtable#t(Namevarchar(10),Subjectvarchar(

假设有张学生成绩表(t)如下: Name Subject Result 张三 语文 73 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成 姓名 语文 数学 物理 张三 73 83 93 李四 74 84 94 代码 create table #t ( Name varchar(10) , Subject varchar(

  假设有张学生成绩表(t)如下:

  Name Subject Result

  张三 语文  73

  张三 数学  83

  张三 物理  93

  李四 语文  74

  李四 数学  84

  李四 物理  94

  想变成

  姓名 语文 数学 物理

  张三 73  83  93

  李四 74  84  94

  代码

  create table #t

  (

  Name varchar(10) ,

  Subject varchar(10) ,

  Result int

  )

  insert into #t(Name , Subject , Result) values('张三','语文','73')

  insert into #t(Name , Subject , Result) values('张三','数学','83')

  insert into #t(Name , Subject , Result) values('张三','物理','93')

  insert into #t(Name , Subject , Result) values('李四','语文','74')

  insert into #t(Name , Subject , Result) values('李四','数学','83')

  insert into #t(Name , Subject , Result) values('李四','物理','93')

  declare @sql varchar(8000)

  set @sql = 'select Name as 姓名'

  select @sql = @sql + ' , sum(case Subject when ''' + Subject + ''' then Result end) [' + Subject + ']'

  from (select distinct Subject from #t) as a

  set @sql = @sql + ' from #t group by name'

  exec(@sql)

  drop table #t

  --结果

  姓名 数学 物理 语文

  ---------- ----------- ----------- -----------

  李四 83 93 74

  张三 83 93 73

  如果上述两表互相换一下:即

  姓名 语文 数学 物理

  张三 73  83  93

  李四 74  84  94

  想变成

  Name Subject Result

  张三 语文  73

  张三 数学  83

  张三 物理  93

  李四 语文  74

  李四 数学  84

  李四 物理  94

  代码

  create table #t

  (

  姓名 varchar(10) ,

  语文 int ,

  数学 int ,

  物理 int

  )

  insert into #t(姓名 , 语文 , 数学 , 物理) values('张三',73,83,93)

  insert into #t(姓名 , 语文 , 数学 , 物理) values('李四',74,84,94)

  select 姓名 as Name,'语文' as Subject,语文 as Result from #t union

  select 姓名 as Name,'数学' as Subject,数学 as Result from #t union

  select 姓名 as Name,'物理' as Subject,物理 as Result from #t

  order by 姓名 desc

  drop table #t

  Name Subject Result

  ---------- ------- -----------

  张三 数学 83

  张三 物理 93

  张三 语文 73

  李四 数学 84

  李四 物理 94

  李四 语文 74

  (所影响的行数为 6 行)


推荐阅读
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 本文介绍如何使用SAS根据输入数据集自动生成并执行SQL查询,其中CASE语句依据另一个数据集中的观测值动态调整。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • Oracle 数据导出为 SQL 脚本的详细步骤
    本文介绍如何使用 PL/SQL Developer 工具将 Oracle 数据库中的数据导出为 SQL 脚本,包括详细的步骤和注意事项。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 1.介绍有时候我们需要一些模拟数据来进行测试,今天简单记录下如何用存储过程生成一些随机数据。2.建表我们新建一张学生表和教师表如下:CREATETABLEstudent(idINT ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
author-avatar
几米小八_198
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有