server-SQL SERVER中行列转换的问题

问题描述

SQL SERVER中行列转换的问题

原数据表
id num acount
0 52 1826.52
1 60 2095.11
2 63 2235.61
3 60 2091.12
4 52 1797.13
5 59 2094.63

如何变成目标数据表
id 0 1 2 3 4 5
num 52 60 63 60 52 59
acount 1826.52 2095.11 2235.61 2091.12 1797.13 2094.63

解决方案

类似下面这样,没有调试

 select sum(row1) row1,sum(row2) row2,sum(row3) row3,sum(row4) row4,sum(row5) row5,sum(row6) row6
from(
select case id when 0 then id row1
,case id when 1 then id row2
,case id when 2 then id row3
,case id when 3 then id row4
,case id when 4 then id row5
,case id when 5 then id row6
from 表 group by id
)
union
select sum(row1) row1,sum(row2) row2,sum(row3) row3,sum(row4) row4,sum(row5) row5,sum(row6) row6
from(
select case id when 0 then num row1
,case id when 1 then num row2
,case id when 2 then num row3
,case id when 3 then num row4
,case id when 4 then num row5
,case id when 5 then num row6
)
from 表 group by id
union
select sum(row1) row1,sum(row2) row2,sum(row3) row3,sum(row4) row4,sum(row5) row5,sum(row6) row6
from(
select case id when 0 then num row1
,case id when 1 then num row2
,case id when 2 then num row3
,case id when 3 then num row4
,case id when 4 then num row5
,case id when 5 then num row6
from 表 group by id
)

解决方案二:

select 'num', sum(decode(id,0,acount)) a0,
sum(decode(id,1,num)) a1,
sum(decode(id,2,num)) a2,
sum(decode(id,3,num)) a3,
sum(decode(id,4,num))a4,
sum(decode(id,5,num)) a5
from mid_pbsh2
union all
select 'acount', sum(decode(id,0,acount)) a0,
sum(decode(id,1,acount)) a1,
sum(decode(id,2,acount)) a2,
sum(decode(id,3,acount)) a3,
sum(decode(id,4,acount))a4,
sum(decode(id,5,acount)) a5
from mid_pbsh2;

时间: 2024-10-31 16:45:36

server-SQL SERVER中行列转换的问题的相关文章

SQL Server中行列转换 Pivot UnPivot

原文:SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )   UNPIVOT用于将列明转为列值(即列转行),在SQL Ser

每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

原文 http://www.cnblogs.com/Olive116/p/3271706.html 2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL查询统计来讲解一下实际开发中比较常用的行列转换/小计/统计等报表统计相关的常用知识点. 题目如下:  查询sales 和stores表,得出1993年每个store每季度销售数量及小计和总计,查询出的

.NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1)

原文:.NET编程和SQL Server --Sql Server 与CLR集成 (学习笔记整理-1) 一.SQL Server 为什么要与CLR集成 1. SQL Server 提供的存储过程.函数等十分有限,经常需要外部的代码来执行一些繁重的移植: 2.与CLR集成可将原本需要独立的程序来实现的功能迁移到SQL Server 内部进行数据操作: 3.T-SQL数据查询语言在返回数据集方面很好,但是除此之外表现不佳.与CLR的集成可解决这一问题: 4..NET的操作代码和执行的速度比T-SQL

sql server...-sql server如何实现16个以上联合主键

问题描述 sql server如何实现16个以上联合主键 现在一个表的联合主键有16个,需要添加一个联合主键,但是sql server最多只能16个主键,怎么能实现17个键的需求? 解决方案 在SQL Server中如何关于修改自增型主键的初始值获取SQL Server 主键有关sql server用int型主键的一些问题

【SQL 学习】行列转换

SQL> conn system/yang as sysdba 已连接. SQL> conn yang/yang 已连接. SQL> create table change (name varchar(10),subject varchar2(20),grade int); 表已创建. SQL> set timing on SQL> insert into change values ('Jim','语文',100); 已创建 1 行. 已用时间:  00: 00: 00.0

sql server 2005中新增加的try catch学习

server sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 基本用法BEGIN TRY     {  sql_statement |  statement_block  }END TRYBEGIN CATCH     {  sql_statement |  statement_block }END CATCH,和普通语言的异常处理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是严重的异常,当比如数据库不能连接等这

sql server中的外键约束

server sql server中建立外键约束有3中方式:1.Enterprise Manager中,Tables,Design Table,设置Table的properties,   可以建立constraint, reference key;2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系.3.直接用transact sql语句. 三个方法都需要先建立数据表.-- 创建表author :CREATE TABLE [dbo].[aut

如何解决 SQL Server 2000 中的连接问题

server|解决|问题 如何解决 SQL Server 2000 中的连接问题适用于 重要说明:本文包含有关修改注册表的信息.修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表.有关如何备份.还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 256986 Microsoft Windows 注册表说明 本任务的内容概要 解决连接问题 验证 DNS 设置 验证启用的协议和别名 验证 SQL Server 实例正在正确地侦听 解

将Session值储存于SQL Server中

server|session 飞刀|2002-2-25 一般情况下,我们喜欢使用Session储存我们的变量.Asp.Net提供了下面一些方法储存Session的值: InProc State Server SQL Server "InProc"表示我们使用传统ASP一样的方法储存Session的值,而且"State Server"则表示使用另外一台主机来储存Session的值.当然我们也能使用SQL Server储存值,我们这篇文章就专门用于讲解这种方法. 运行I