SQL Server:
参考:http://hi.baidu.com/qzrc/blog/item/952686184634e0b44aedbcea.html或http://www.cppblog.com/lilac/archive/2008/01/13/41069.html
--create table dbo.test_course(name varchar(20),subject varchar(20),score int);
insert into test_course values('L','java',81);
insert into test_course values('L','C',71);
insert into test_course values('M','java',66);
insert into test_course values('M','C',99);
insert into test_course values('N','java',33);
insert into test_course values('N','C',88);
--select * from test_course;
--drop table test_course;
select DISTINCT name,
(select score from test_course where subject='java' and name=t1.name) as java,
(select score from test_course where subject='C' and name=t1.name) as C
from test_course t1
--行列转换
create table cj --创建表cj
(
ID Int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
Name Varchar(50),
Subject Varchar(50),
Result Int,
primary key (ID) --定义ID为表cj的主键
);
--Truncate table cj
--Select * from cj
Insert into cj
Select '张三','语文',80 union all
Select '张三','数学',90 union all
Select '张三','物理',85 union all
Select '李四','语文',85 union all
Select '李四','物理',82 union all
Select '李四','英语',90 union all
Select '李四','政治',70 union all
Select '王五','英语',90
--行列转换
Declare @sql varchar(8000)
Set @sql = 'Select Name as 姓名'
Select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result else 0 end) ['+Subject+']'
from (select distinct Subject from cj) as cj --把所有唯一的科目的名称都列举出来
Select @sql = @sql+' from cj group by name'
Exec (@sql)
create table dbo.test_sale(name varchar(20),subject varchar(20),sale_money int);
insert into test_sale values('A','市场',1000);
insert into test_sale values('A','配套',2000);
insert into test_sale values('A','外贸',2000);
insert into test_sale values('B','市场',500);
insert into test_sale values('B','配套',1500);
insert into test_sale values('B','外贸',1000);
insert into test_sale values('C','市场',500);
insert into test_sale values('C','配套',600);
insert into test_sale values('C','外贸',1000);
select DISTINCT name,
(select sum(sale_money) from test_sale where subject<>'外贸' and name=t1.name) as 国内销量,
(select sum(sale_money) from test_sale where subject='外贸' and name=t1.name) as 出口销量
from test_sale t1
select name,
sum(case when subject<>'外贸' then sale_money else 0 end) as 国内销量,
sum(case when subject='外贸' then sale_money else 0 end) as 出口销量
from test_sale group by name
drop table test_sale;
参考http://topic.csdn.net/u/20090805/16/a0c3b692-4488-45ba-a919-14f4a812521b.html?seed=700138887&r=58862742#r_58862742
今日做销售数据统计时遇到一个棘手问题,请各位朋友不吝赐教
原数据格式如下:
产品 销量 销售类型
A 1000 市场
A 2000 配套
A 2000 外贸
B 500 市场
B 1500 配套
B 1000 外贸
C 500 市场
C 600 配套
C 1000 外贸
…… …… ……
如何通过 sql 查询语句得到如下结果(sql 2000)
产品 国内销量 出口销量
A 3000 2000
B 2000 1000
C 1100 1000
分享到:
相关推荐
SQL 行列转换扩展 SQL 行列转换扩展是指将数据库表中的行数据转换为列数据,或者将列数据转换为行数据的操作。这种操作在数据分析和报表生成中非常常见。在本文中,我们将介绍两种类型的行列转换扩展方法:行转列...
通过学习这些SQL试题、行列转换技巧和存储过程实例,你可以全面提升SQL技能,无论是日常的数据查询还是复杂的业务逻辑处理,都能得心应手。在实际工作中,不断练习和探索,将理论知识转化为实践能力,是成为SQL高手...
SQL 行列转换 Pivot UnPivot SQL 行列转换是指将表格中的行数据转换为列数据,或者将列数据转换为行数据。Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要...
sql行列转换、一个字段包含另一个字段.sql
SQL 语句行列转换(附带数据库、表、视图操作) SQL 语句行列转换是数据库管理系统中的一种常见操作,它可以将数据从行转换为列,或者从列转换为行。在这个过程中,需要使用数据库管理语言(Database Management ...
在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...
一个简单的SQL 行列转换 Author: eaglet 在数据库开发中经常会遇到行列转换的问题,比如下面的问题,部门,员工和员工类型三张表,我们要统计类似这样的列表 部门编号 部门名称 合计 正式员工 临时员工 辞退员工 1 A...
在SQL中,行列转换是一种常见的数据操作,尤其在数据分析和报表生成时十分有用。这个案例主要涉及了如何将数据从行格式转换为列格式,针对的是一个学生成绩表,其中包含姓名、科目和成绩三个字段。我们将分别介绍...
### SQL Server 行列转换知识点解析 #### 一、行列转换概述 在处理数据库查询时,我们经常会遇到需要将表中的行数据转换为列数据的需求,这种操作通常被称为“行列转换”。例如,当我们需要汇总不同类别的数据并将...
### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...
在SQL中,行列转换是一种常见的数据操作,用于将表格数据从行格式转换为列格式,或者反之。在给定的PDF文件中,涉及到的具体知识点主要包括以下几个方面: 1. **CASE语句**:在SQL查询中,`CASE`语句常用于进行条件...
### SQL 2008 行列转换 (Pivot) 的动态实现 #### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表...
java语言 数据库 mysql数据库 sql行列转换的例子 详解
在SQL中,行列转换是一种常见的数据操作,尤其在数据分析和报表生成时尤为关键。动态添加列则是在查询过程中根据特定条件或数据集自动生成列,这在处理不断变化的数据结构时非常有用。以下是对这些主题的详细解释: ...
### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...