create table #test1(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)

insert into #test1 values(1,'a',1000,2000,4000,5000)
--insert into #test values(2,'b',3000,3500,4200,5500)

select * from #test1

select profile
from
#test1
unpivot
(
profile
for quarter in
([Q1],[Q2],[Q3],[Q4])
)
as unpvt

表一 学生成绩表
编号  课程  成绩
001    计算机   65
002    计算机   75

003   体育      54
004   美术       65
005   体育       54

001   体育       56

现 想让查询结果达到如下 要求
学生编号    计算机成绩  体育成绩 美术成

001             65        56          75
.......

--典型的列变行,用动态语句来做
--测试数据
declare @tab table(id varchar(3),class varchar(10),sums int)
insert @tab select '001','计算机','65' union all
select '002','计算机','75' union all select '001','美术','77' union all
select '003','体育','54' union all select '004','美术','65' union all
select '005','体育','55' union all select '001','体育','56' union all
select '002','体育','88' union all select '002','美术','98' union all
select '003','计算机','82' union all select '003','美术','92' union all
select '004','计算机','85' union all select '004','体育','25' union all
select '005','计算机','89' union all select '005','美术','99';
--select * from @tab
--下面是测试代码
select * into #temp1 from @tab declare @str varchar(8000)
set @str='select id as 编号,' select @str=@str+'
sum(case class when'''+class+'''then sums else 0 end) as'''+class+'成绩'+''','
from (select distinct class from #temp1)t
set @str=left(@str,len(@str)-1)+' from #temp1 group by id' exec(@str)
drop table #temp1
/* 下面是测试结果
(所影响的行数为 15 行)

(所影响的行数为 15 行)
编号 计算机成绩 美术成绩 体育成绩 
---- ----------- ----------- ----------- 

001 65 77 56
002 75 98 88
003 82 92 54
004 85 65 25
005 89 99 55 */

sql 行列转换的更多相关文章

  1. SQL行列转换6种方法

    在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解 ...

  2. 数据透视表sql:用SQL行列转换实现数据透视的一些思考

    用SQL行列转换实现数据透视的一些思考 摘要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实 ...

  3. sql行列转换

    首先我们建立一张表,名为scoreInfo,各个字段的设计如下图,分别是name,course,score,表示姓名,成绩与分数,如图所示.

  4. mysql:sql行列转换

    今天一个同学遇到一个问题问我了,由于本人平时学习的mysql比较基础,确实没解决,后来google了一下,才知道是sql的一种技法[行列转换],话不多说先上图: 想得到下面的结果: +------+- ...

  5. SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品

    有同学问了个比较典型行列转换的问题,想想,解答如下:数据库有一张表: 是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品: 哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的 ...

  6. 绝妙的SQL行列转换语句

      说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法. 问题:假设有张学生成绩表( ...

  7. 经典SQL行列转换

    -- http://www.programbbs.com/doc/4885.htm /* 标题:普通行列转换(version 2.0) 说明:普通行列转换(version 1.0)仅针对sql ser ...

  8. SQL 行列转换简单示例

    SQLSERVER 2005 以后提供了新的方式进行行列转换,下面是一个实例供参考: if object_id('tb') is not null drop table tbTest go ),季度 ...

  9. Sql行列转换参考

    行列转换:SELECT max(case type when 0 then jine else 0 end) a,max(case type when 1 then jine else 0 end) ...

  10. SQL 行列转换数据转换为字符串

    行列转换,将列数据转换为字符串输出 ) SET @center_JZHW = ( SELECT DISTINCT STUFF( ( SELECT ',' + ce_code FROM ap_cente ...

随机推荐

  1. git中文乱码问题

    控制台中输入:git config --global core.quotepath false

  2. 洛谷P3355 骑士共存问题(最小割)

    传送门 de了两个小时的bug愣是没发现错在哪里……没办法只好重打了一遍竟然1A……我有点想从这里跳下去了…… 和方格取数问题差不多,把格子按行数和列数之和的奇偶性分为黑的和白的,可以发现某种颜色一定 ...

  3. django部署ubuntu数据库MYSQL时区问题

    SELECT * FROM mysql.time_zone; SELECT * FROM mysql.time_zone_name; mysql_tzinfo_to_sql /usr/share/zo ...

  4. 老男孩Day17作业:后台管理平台编辑表格

    一.作业需求: 后台管理平台 ,编辑表格: 1. 非编辑模式: 可对每行进行选择: 反选: 取消选择 2. 编辑模式: 进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变 退出编 ...

  5. gym 102082B dp

    和51nod1055 一样: #include<iostream> #include<cstdio> #include<algorithm> #include< ...

  6. sql 语句设置主键

    创建表时候 SQL code? 1 2 3 4 CREATE TABLE tb ( id INT IDENTITY(1,1) PRIMARY KEY, ) 添加时候 SQL code? 1 2 ALT ...

  7. qt线程睡眠

    头文件 #include <QThread> 接口函数: void QThread::sleep ( unsigned long secs )   [static protected] v ...

  8. PHP 备份还原 MySql 数据库

    原生 PHP 备份还原 MySql 数据库 支持 MySql,PDO 两种方式备份还原 php5.5 以上的版本建议开启pdo扩展,使用 pdo 备份还原数据 备份文件夹 db_backup.impo ...

  9. C++_友元1-友元类是什么

    友元函数:不是类的成员函数,但是能够访问类的私有数据成员. 之前有个矛盾就是规定非成员函数不能直接访问类的私有数据,但是这会儿却可以,但那只是针对常规非成员函数而言,特殊的非成员函数就可以访问类的私有 ...

  10. bcdedit /copy {current} /d "xxx" 报错,提示找不到系统文件

    步骤: cd c:windows/system32 bcdedit /set {default} osdevice boot bcdedit /set {default} device boot bc ...