很简单的一个东西,见网上好多朋友问“怎么实现交叉表?”,以下是我写的一个例子,数据库基于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
自己制作的过程:
CREATE Table allen_test(
id NUMBER(8,0) NOT NULL ,
name VARCHAR2(30) NOT NULL ,
subject VARCHAR2(30) NOT NULL ,
Source NUMBER(8,2) ,
PRIMARY Key (Id)
);
COMMENT ON Column allen_test.Id IS '序号';
COMMENT ON Column allen_test.Name IS '姓名';
COMMENT ON Column allen_test.subject IS '学科';
COMMENT ON Column allen_test.Source IS '分数';
INSERT Into allen_test values (1, '张三','语文',60);
INSERT INTO allen_test values (2, '李四','数学',70);
INSERT Into allen_test values (3, '王五','英语',80);
INSERT INTO allen_test values (4, '王五','数学',75);
INSERT INTO allen_test values (5, '王五','语文',57);
INSERT INTO allen_test values (6, '李四','语文',80) ;
INSERT INTO allen_test values (7, '张三','英语',100);
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 allen_test
group by Name;
分享到:
相关推荐
sql2000交叉表实例,如统计各个销售员全国各省的客户数,每行显示一个销售员,省名做为列标题(但省的数目姓名不定),SQL帮助里用CASE写的交叉表不实用,就是因为省的数目姓名不定。
涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户定义数据类型、数据库安全、系统表应用实例、SQL Server...
在管理系统中,管理人员往往需要对业务数据进行不同需求的分层汇总,并产生各种形式交叉报表。为了实现此类报表,程序员需要构造层次结构非常复杂的SQL语句,甚至使用前台编程工具或其它报表工具来完成。 以下通过二...
实例362 静态交叉表(SQLServer 2000) 531 实例363 动态交叉表(SQLServer 2000) 533 10.19 函数查询 535 实例364 在查询语句中使用格式化函数 536 实例365 在查询语句中使用字符串函数 ...
摘要:VB源码,数据库应用,交叉表查询 VB6.0与SQL2000结合演示的动态交叉表查询方法,测试前请首先附加Database文件中的数据库,然后再运行可执行文件。 数据库的附加方法如下: 1.将目录database下的xs_Data.MDF...
工作中常用的SQL + 超复杂SQL 交叉连接查询corss.txt 公交线路问题.txt 。。。。 充储过程--sql0.sql 分割字符串.txt 分布式查询.txt 分组排列进行更新.txt 别名.txt 动态SQL语句.txt 动态语句.txt 区分大小写.txt ...
摘要:C#源码,数据库应用,dataGridView,静态交叉表 C# 静态交叉表(SQLServer2000)源码实例,进行销售业绩的分析查询,可按员工姓名分析,或按部门分析,分析前请附加Database文件夹中的数据库文件。
实例282 动态交叉表(SQL Server 2000) 9.17 函数查询 实例283 在查询语句中使用字符串函数 实例284 在查询中使用日期函数 实例285 在查询时为表中的空字段添加默认信息 第10章 打印与报表技术 10.1 基础报表...
4.2.2 本章实例用到的实例表 64 4.2.3 创建简单的非簇索引 66 4.2.4 多字段非簇索引的创建 69 4.2.5 使用unique关键字创建惟一索引 70 4.2.6 使用clusterde关键字创建簇索引 71 4.2.7 索引的销毁 73 4.2.8 ...
主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。 书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...
主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。 书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...
实例294 创建表和删除表 388 实例295 对ADO控件的无数据库操作 389 第9章 SQL技术 391 9.1 通用查询 392 实例296 SQL语句的应用方法 392 实例297 SQL语句的模糊查询 393 实例298 高级Like语句 394 ...
摘要:C#源码,数据库应用,交叉表查询 C#动态交叉表查询,附有数据库文件,动态交叉表查询的SQL实例,源代码完整。
它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...
实例096 使用交叉表实现商品销售统计 345 实例097 通过视图修改职工信息 347 实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作...