当前位置: 首页 > news >正文

详细介绍SQL交叉表的实例

  很简单的一个东西,见网上好多朋友问“怎么实现交叉表?”,以下是我写的一个例子,数据库基于SQL SERVER 2000。
  
  交叉表实例
  
  建表:
  
  在查询分析器里运行:
  
  CREATE TABLE [Test] (
  
  [id] [int] IDENTITY (1, 1) NOT NULL ,
  
  [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
  
  [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
  
  [Source] [numeric](18, 0) NULL
  
  ) ON [PRIMARY]
  
  GO
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'数学',75)
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'语文',57)
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'语文',80) [bitsCN.Com]
  
  INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'英语',100)
  
  Go
  
 

  交叉表语句的实现:
  
  用于:交叉表的列数是确定的
  
  select name,sum(case subject when '数学' then source else 0 end) as '数学',
  
  sum(case subject when '英语' then source else 0 end) as '英语',
  
  sum(case subject when '语文' then source else 0 end) as '语文'
  
  from test
  
  group by name
  
  --用于:交叉表的列数是不确定的
  
  declare @sql varchar(8000)
  
  set @sql = 'select name,'
  
  select @sql = @sql + 'sum(case subject when '''+subject+'''
  
  then source else 0 end) as '''+subject+''','
  
  from (select distinct subject from test) as a
  
  select @sql = left(@sql,len(@sql)-1) + ' from test group by name'
  
  exec(@sql)
  
  go

     
  

MS Server的Analysis   Services組件是專門用來做交叉表的處理

Microsoft   SQL   Server   2000   Analysis   Services

相关文章:

  • mysql随机取3条数据以及优化
  • Google请人为Android挑刺
  • java中的异常理解
  • CSS-border属性制作小三角
  • Net几种常用传值方式
  • JSP学习笔记(二十八):struts2中验证表单内容
  • 如何做好自动化测试,揭秘阿里巴巴分层自动化实践之路
  • 如何在SQL Server数据库中加密数据
  • 唱歌的方法与技巧[收集]
  • 2016 “Better Software East/DevOps East/Agile Dev East”三个会议上的发言
  • as3corelib系列教程之一:ArrayUtil类的用法
  • 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(一)
  • HSRP的工作原理
  • 概率图常见模型
  • NTpassword(MD4)
  • JS 中的深拷贝与浅拷贝
  • JS变量作用域
  • Linux中的硬链接与软链接
  • nodejs实现webservice问题总结
  • React系列之 Redux 架构模式
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 从输入URL到页面加载发生了什么
  • 后端_ThinkPHP5
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 学习笔记:对象,原型和继承(1)
  • 译米田引理
  • scrapy中间件源码分析及常用中间件大全
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #define
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (BFS)hdoj2377-Bus Pass
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (译) 函数式 JS #1:简介
  • (原)Matlab的svmtrain和svmclassify
  • (转)EOS中账户、钱包和密钥的关系
  • **python多态
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .gitignore文件—git忽略文件
  • .net 程序发生了一个不可捕获的异常
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET连接数据库方式
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [nlp] grad norm先降后升再降
  • [Oracle]如何观察Table 的各种Lock 之间的冲突
  • [UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库
  • [Web 前端] 你不知道的 React Router 4
  • [Web开发] 网页的浏览器兼容性测试工具
  • [XA]我们为什么不用XP(eXtreme Programming)极限编程?
  • [北航软工]技术规格说明书
  • [北京] [在线教育项目] [学而思] 求 PHP 攻城狮 3 枚 ╮(╯_╰)╭
  • [翻译]——SQL Server使用链接服务器的5个性能杀手