SqlServer 行转列(统计某年一到十二个月数据总和)

select * from(
    select
sum(case MONTH(purchase_date) when ‘1‘ then SumMoney else 0 end) as January,
sum(case MONTH(purchase_date) when ‘2‘ then SumMoney else 0 end) as February,
sum(case MONTH(purchase_date) when ‘3‘ then SumMoney else 0 end) as March,
sum(case MONTH(purchase_date) when ‘4‘ then SumMoney else 0 end) as April,
sum(case MONTH(purchase_date) when ‘5‘ then SumMoney else 0 end) as May,
sum(case MONTH(purchase_date) when ‘6‘ then SumMoney else 0 end) as June,
sum(case MONTH(purchase_date) when ‘7‘ then SumMoney else 0 end) as July,
sum(case MONTH(purchase_date) when ‘8‘ then SumMoney else 0 end) as  August,
sum(case MONTH(purchase_date) when ‘9‘ then SumMoney else 0 end) as September,
sum(case MONTH(purchase_date) when ‘10‘ then SumMoney else 0 end) as October,
sum(case MONTH(purchase_date) when ‘11‘ then SumMoney else 0 end) as November,
sum(case MONTH(purchase_date) when ‘12‘ then SumMoney else 0 end) as December
 from Purchase)  td  unpivot  (moneys for months in
 (January,February,March,April,May,June,July,August,September,October,November,December)) as temp

时间: 2024-10-09 20:42:18

SqlServer 行转列(统计某年一到十二个月数据总和)的相关文章

Mysql 列转行统计查询 、行转列统计查询

之前看过一篇博文写得非常好,看后就很容易让人理解,博文地址为:http://www.cnblogs.com/lhj588/p/3315876.html 最近在群里又碰到一个朋友说起,于是记录一下: 假设表名为t.表里有六个字段p1,p2,p3,s1,s2,s3 现在想得到 p1=100 时s1值的总和 p2=100 时s2值的总和 p3=100 时s3值的总和 创建表: CREATE TABLE `t` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `s

sqlserver 行转列 语文,数学,物理,化学

数据库查询行转列 1.原数据库值 stdname stdsubject result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 李四 化学 82 李四 化学 82 2.要得到如下表 stdname 语文 数学 物理 化学 李四 85 92 82 164 张三 80 90 85 NULL 3.实现方法 --第一种 调用行转列函数 select * from (select stdname,stdsubject,result from

SQLserver行转列与列转行

行表: 行表 姓名 属性 属性值 JACK 身高 180 JACK 体重 80 JACK 年龄 27 TOM 身高 164 TOM 体重 59 TOM 年龄 20 列表: 列表 姓名 身高 年龄 体重 JACK 180 27 80 TOM 164 20 59 行转列就是将行表转换为列表,反之为列转行. --================================================================== ----------------------------行

SqlServer行转列(PIVOT),列转行(UNPIVOT)总结

PIVOT用于将列值旋转为列名(即行转列) 语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行) 语法: table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 注意:PIVOT.UNPIVOT是SQL Server 2005的语法,使用需修改数

sqlserver 行转列、列转行[转]

转自:http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html Sql Server 行转列.列转行 创建表: CREATE TABLE [dbo].[tbl_Student]( [ID] [int] IDENTITY(1,1) NOT NULL, [学生ID] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [学生姓名] [nvarchar](50) COLLATE Chines

SQLSERVER行转列

create table test2(id int,name varchar(20),quarter char,profile1 int) insert into test2 values(1,'a',1,1000) insert into test2 values(1,'a',2,2000) insert into test2 values(1,'a',3,4000) insert into test2 values(1,'a',4,5000) insert into test2 values

SqlServer 行转列

SELECT 列名+',' FROM 表名 FOR XML PATH('')

Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。

select OPER_TIME, MICROPAY, REFUND from ( select trunc(oper_time) oper_time, class_name, sum(total_fee) total_fee from wx_pay_detail group by trunc(oper_time),class_name ) pivot(sum(total_fee) for class_name in ('MicroPay'as "MICROPAY",'Refund'

Oracle中“行转列”的实现方式

在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用“行转列”: scott的emp的原始数据为: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 12/17/1980 800.00 20 7499 ALLEN SALESMAN 7698 2/20/1981 1600.00 300.00 30 7521 WARD SALESMAN