`

ms sql 交叉表

阅读更多
一.

交叉表是一种常用的分类汇总表格。使用交叉表查询,显示源于表中某个字段的汇总值,并将它们分组,其中一组列在数据表的左侧,另一组列在数据表的上部。行和列的交叉处可以对数据进行多种汇总计算,如:求和、平均值、记数、最大值、最小值等。使用交叉表查询数据非常直观明了,被广泛应用。交叉表查询也是数据库的一个特点。

1.建表

  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


2.加数据



3.交叉表语句的实现:
  
  用于:交叉表的列数是确定的

  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 '''+a.subject+'''
then source else 0 end) as '''+a.subject+''','
from (select distinct subject from student1) as a
print(@sql)
print('------------------------------------------------------------------------------')
select @sql = left(@sql,len(@sql)-1) + ' from student1 group by name'
print(@sql)
exec(@sql)
go

------------------------------------------------------
--可以
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 student1) as a
print(@sql)
print('------------------------------------------------------------------------------')
select @sql = left(@sql,len(@sql)-1) + ' from student1 group by name'
print(@sql)
exec(@sql)
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 '语文',
------------------------------------------------------------------------------
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 student1 group by name

4.如何生成以下的报表





如果在程序,页面生成就方便,如果用SQL查出为就应该怎样写SQL语句???


5.MS Server的Analysis   Services組件是專門用來做交叉表的處理
  • 大小: 71.4 KB
  • 大小: 10 KB
  • 大小: 7.3 KB
  • 大小: 9 KB
分享到:
评论

相关推荐

    MS+SQL全系列教程 [入门必备' 强烈推荐]

    4. **查询语言SQL**:深入讲解SQL语言,包括SELECT语句的基本用法、聚合函数(如COUNT、SUM、AVG)、分组与排序(GROUP BY和ORDER BY),以及JOIN操作(内连接、外连接和交叉连接)用于多表查询。 5. **视图与存储...

    MS+SQL+SERVER+数据库技巧总绍

    4. **JOIN操作**:学习内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)和交叉连接(CROSS JOIN),实现多表数据合并。 5. **存储过程和函数**:创建并调用存储过程和自定义函数,实现封装逻辑和计算。...

    MS-SQL报表生成的一种通用方法.pdf

    报表生成的最终结果是将基础表的数据以一种用户友好的形式展现,例如交叉表。这种表格可以通过行列互换的方式,清晰地展现不同数据维度的汇总信息。 结合上述知识点,可以总结如下几点: 1. 利用GROUP BY语句和聚合...

    程序员的SQL金典.rar

     本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数...

    超经典的SQL代码,及代码集

    1. **联接查询**:SQL支持内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)和交叉连接(CROSS JOIN),用于合并多个表的数据。 2. **子查询**:在主查询中嵌套一个或多个查询,用于满足特定条件...

    计算机二级MS Office操作题主要知识点

    - **查询操作**:使用选择、交叉表、操作、参数和SQL查询,检索和处理数据。 - **窗体与报表**:设计用户界面,创建窗体和报表以展示和编辑数据。 - **宏与模块**:编写宏和VBA代码,实现自动化任务和业务逻辑。 ...

    MS教程之Access的入门与提高

    4. **查询数据**:使用查询工具,如选择查询、交叉表查询、操作查询和参数查询,筛选和组合数据。 5. **创建窗体**:设计自定义的用户界面,用于数据输入和浏览。 6. **设计报表**:自动格式化的输出,通常用于打印...

    Web-BI产品介绍.pptx

    1. **报表展现方式**:Web-BI支持多种类型的报表,包括表格型标准报表、交叉表和图表型报表。交叉表允许用户在行和列上进行复杂计算,而图表型报表则以图形化的方式展示数据,使数据分析更直观易懂。 2. **报表输出...

    Google、MS和BAT教给我的面试真谛.rar

    8. **数据分析与大数据处理**:对数据的理解和处理能力也很重要,Hadoop、Spark、SQL查询优化等技能在处理大数据问题时尤为关键。 9. **云计算**:了解AWS、Azure、阿里云等主流云平台的特性和服务,以及如何在云端...

    Web-BI产品介绍(2).pptx

    首先,其报表展现方式丰富多样,不仅有表格型标准报表和交叉表,还支持图表型报表,如饼图、柱状图和线图,以及OLAP(在线分析处理)功能,允许用户在多维度上进行数据分析。例如,通过时间维和地区维的向下钻取,...

    海量数据库的查询优化及分页算法方案

    本文以“海量数据库的查询优化及分页算法方案”为主题,结合具体的MS SQL SERVER数据库实例,探讨了如何高效处理和展示大规模数据。 首先,面对千万级别的数据量,传统的SQL查询可能变得效率低下,因此需要对查询...

    全国计算机等级考试二级ACCESS数据库程序设计随堂笔记---查询.pdf

    5. 交叉表查询(Crosstab Query):用于将一列数据转换为多个列,通常结合聚合函数如SUM、COUNT等,用于数据汇总。 6. 参数查询:与用户交互的一种方式,允许用户输入条件值,查询结果根据输入的值变化。 在设计...

    2021-2022计算机二级等级考试试题及答案No.11118.docx

    交叉表查询是一种特殊的查询类型,用于汇总数据并显示在一个表格形式中。根据题目描述,使用向导创建交叉表查询的数据源必须来自 **1个表或查询**。这是因为交叉表查询通常是基于一个表或查询的数据进行分组和汇总。...

    Windows 系统错误代码简单分析

    Microsoft Windows 系统错误代码简单分析:  0000 操作已成功完成。  0001 错误的函数。  0002 系统找不到指定的文件。 ... 0003 系统找不到指定的路径。...可能是一个包含注册表数据文件的结构已损坏,也可能...

Global site tag (gtag.js) - Google Analytics