sql-行列转换

SELECT a.`name`,a.mon,

SUM(CASE RIGHT(a.mon,2) WHEN ‘01‘  THEN sa ELSE 0 END) ‘01月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘02‘  THEN sa ELSE 0 END) ‘02月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘03‘  THEN sa ELSE 0 END) ‘03月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘04‘  THEN sa ELSE 0 END) ‘04月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘05‘  THEN sa ELSE 0 END) ‘05月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘06‘  THEN sa ELSE 0 END) ‘06月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘07‘  THEN sa ELSE 0 END) ‘07月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘08‘  THEN sa ELSE 0 END) ‘08月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘09‘  THEN sa ELSE 0 END) ‘09月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘10‘  THEN sa ELSE 0 END) ‘10月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘11‘  THEN sa ELSE 0 END) ‘11月‘,
SUM(CASE RIGHT(a.mon,2) WHEN ‘12‘  THEN sa ELSE 0 END) ‘12月‘

FROM sale a

GROUP BY a.mon

行转列列传行更具体例子

1、查看数据

Sql代码  

  1. SELECT  * FROM tabName ;

2、列转行统计数据

Sql代码  

  1. SELECT DATE ,
  2. MAX(CASE NAME WHEN ‘小说‘ THEN Scount ELSE 0 END ) 小说,
  3. MAX(CASE NAME WHEN ‘微信‘ THEN Scount ELSE 0 END ) 微信
  4. FROM TabName
  5. GROUP BY DATE

3、行转列

Sql代码  

  1. SELECT DATE,GROUP_CONCAT(NAME) FROM tabname GROUP BY DATE

4、行转列统计数据

Sql代码  

  1. SELECT DATE, GROUP_CONCAT(NAME,‘总量:‘,Scount) AS b_str FROM tabName GROUP BY DATE

Sql代码  

  1. SELECT DATE,NAME, GROUP_CONCAT(NAME,‘总量:‘,Scount) AS b_str FROM   TabName GROUP BY DATE ,NAME

原文地址:https://www.cnblogs.com/jentary/p/11579319.html

时间: 2024-11-05 20:25:40

sql-行列转换的相关文章

SQL行列转换6种方法

在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解法以及Oracle支持解法. 一.测试数据 测试表依旧采用Oracle经典的scott模式下的dept表和emp表,结构如下: DEPT: create table DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(

sql行列转换

首先我们建立一张表,名为RToC,各个字段的设计如下图,分别是name,course,score,表示姓名,成绩与分数,如图所示. 2 我们往表中加入数据,分别添加小明与小花的语文和数学成绩,如图所示. 3 接下来,我们要进行行列转换,列应该是name,语文,数学.我们首先要考虑是如何得到列名,我们可以通过分组得到课程名称.如图所示,我们通过分组语句,从查询结果我们可以看出课程名的拼接字符串. 代码: declare @sql varchar(200) select @sql=ISNULL(@s

【转】SQL行列转换

原文地址:http://blog.csdn.net/kiki113/article/details/4105929 行列转换等经典SQL语句 1.--行列转换 原表:   姓名     科目   成绩           张三     语文    80           张三     数学    90           张三     物理    85           李四     语文    85           李四     物理    82           李四     英语

oracle高级SQL(四)--SQL行列转换专题2

[上一专题]  行列转换1  -- PIVOT与UNPIVOT函数的介绍 实现案例 1001 lufei 1001 shanzhi 1001 namei 1001 qiaoba 实现效果如下: 1001 lufei,shanzhi,namei,qiaoba 典型的行列转换:实现这种方法有很多. 其中oracle11g之后提供了listagg函数;用来实现上面的效果最好不过了:我们来看下listagg语法 listagg函数的语法结构如下: >listagg( [,]) within group

SQL 行列转换简单示例

SQLSERVER 2005 以后提供了新的方式进行行列转换,下面是一个实例供参考: if object_id('tb') is not null drop table tbTest go create table tbTest(产品 varchar(10),季度 varchar(10),销售额 int) insert into tbTest values('产品1','一季度',1000) insert into tbTest values('产品1','二季度',2000) insert i

SQL行列转换的另一种方法

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)insert into tb values('张三' , '语文' , 74)insert into tb values('张三' , '数学' , 83)insert into tb values('张三' , '物理' , 93)insert into tb values('李四' , '语文' , 74)insert into tb values('李四' , '数学' , 8

SQL行列转换——商品SKU颜色尺码合并

create procedure proc_GoodsSkuCombine as IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GoodsTemp1]') AND type in (N'U')) DROP TABLE [dbo].GoodsTemp1 ;with roy as (select Number,ColorName,SizeName,row=row_number()over(parti

SQL中PIVOT 行列转换

SQL中PIVOT 行列转换 本文导读:T-SQL语句中,Pivot运算符用于在列和行之间对数据进行旋转或透视转换,PIVOT命令可以实现数据表的列转行,同时执行聚合运算,UNPIVOT则与其相反,实现数据的行转列. PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列传行 一.PIVOT实例 1

sql server 行列转换

SQL 列转行 2011-04-22 16:13:41 好东西,转一下,嘿嘿. * 普通行列转换 (爱新觉罗.毓华 2007-11-18于海南三亚) 假设有张学生成绩表(tb)如下: Name Subject Result 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 */ ------------------------------------------------------------------------- /* 想变成

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 Server 2