经常折腾数据库,常常遇到数据库行列转换的问题,下面就用一个小例子来演示下如何进行行列转换。

1.创建一张表

CREATE TABLE [android_source](
[CREATETIME] [datetime] NULL,
[SOURCE] [nvarchar](255) NULL,
[COUNT] [float] NULL
)

2.插入测试数据

insert android_source (CREATETIME,SOURCE,COUNT)  values ( '2013-07-13 00:00:00.000','1xingdong',3);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','eoemarket',1);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','lenovomm',2);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','mqidian',2);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','mumayi',5);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','nduoa',1);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','paojiao',4);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-13 00:00:00.000','qidian',5);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','1xingdong',20);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','eoemarket',7);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','lenovomm',21);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','mqidian',43);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','mumayi',17);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','nduoa',14);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','paojiao',8);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-14 00:00:00.000','qidian',72);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-15 00:00:00.000','1xingdong',30);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-15 00:00:00.000','eoemarket',22);
insert android_source (CREATETIME,SOURCE,COUNT) values ( '2013-07-15 00:00:00.000','lenovomm',32);

3.列转行

SELECT
CONVERT(varchar(10), [CREATETIME],120) as CreateTime,
MAX(CASE [SOURCE] WHEN 'qidian' THEN [COUNT] ELSE 0 END) AS 'qidian',
MAX(CASE [SOURCE] WHEN 'paojiao' THEN [COUNT] ELSE 0 END) AS 'paojiao',
MAX(CASE [SOURCE] WHEN 'nduoa' THEN [COUNT] ELSE 0 END) AS 'nduoa',
MAX(CASE [SOURCE] WHEN 'mumayi' THEN [COUNT] ELSE 0 END) AS 'mumayi',
MAX(CASE [SOURCE] WHEN 'mqidian' THEN [COUNT] ELSE 0 END) AS 'mqidian',
MAX(CASE [SOURCE] WHEN 'lenovomm' THEN [COUNT] ELSE 0 END) AS 'lenovomm',
MAX(CASE [SOURCE] WHEN 'eoemarket' THEN [COUNT] ELSE 0 END) AS 'eoemarket',
MAX(CASE [SOURCE] WHEN 'dbank' THEN [COUNT] ELSE 0 END) AS 'dbank',
MAX(CASE [SOURCE] WHEN '1xingdong' THEN [COUNT] ELSE 0 END) AS '1xingdong'
FROM [MyDataBase].[dbo].android_source
GROUP BY CONVERT(varchar(10), [CREATETIME],120)

结果:

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

  1. (sql server)玩转-数据库行列转换

    虽然开发过程中没用过行列转换,但是听说面试时常常会遇到这个问题,以前在网上也看到过大神的例子,今天自己仔细的玩了下,希望和大家分享一下了. 注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦 ...

  2. SQL2005数据库行列转换

    注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns (一)行转列的方法 先说说行转列的方法,这个就比较好想了,利用拼sql和case wh ...

  3. 最近整理的一些行列转换sql(有自己的,有别人的),留作记录

    --case when 经典用法SELECT * FROM        (SELECT 1 NUM,              '奖项金额',              SUM(CASE WHEN ...

  4. SqlServer2000下实现行列转换

    SqlServer2000下实现行列转换 2011-04-06 22:07:07|  分类: SQL Server |  标签:sqlserver  2000  行列转换  sql  |举报|字号 订 ...

  5. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  6. SQL Server中行列转换 Pivot UnPivot

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

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

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

  8. SQL行列转换6种方法

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

  9. SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

    SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...

随机推荐

  1. verilog语法实例学习(10)

    常用的时序电路介绍 T触发器和JK触发器 在D触发器输入端添加一些简单的逻辑电路,可以生成另一种类型的存储元件.比如下图所示的T触发器.该电路有一个上升沿触发的触发器和两个与门,一个或门,以及一个反相 ...

  2. Zindex和png

    Z轴在元素设置position为absolute或relative后被激活,起大小由z-index设置,z-index越大,元素位置越靠上.如果多个元素的z-index值相同,那么html标签中后出现 ...

  3. Windbg命令学习15(bp bm bu bl bc ba断点)

    以下以skinhgy为例,windbg附加运行 1. bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会 ...

  4. LeetCode 754. Reach a Number到达终点数字

    题目 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数. 示例 1: 输 ...

  5. Ubuntu环境变量解析

    在Ubuntu中有如下几个文件可以设置环境变量 /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /e ...

  6. 自己理解BFC 和 stack context , stack order

    1. stack order 发生在BFC计算好了之后. 2.一个一个的BFC里面,不同的block 里面的stack context 会根据 stack order的顺序,进行堆叠.呈现互相遮盖的效 ...

  7. 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  8. 如何导入另一个 Git库到现有的Git库并保留提交记录

    问题描述: 我在本地有两个Git库项目(D1=PC项目 包含通用项目,D2=移动项目 也包含通用项目这两个项目在同一目录下),因为这两个项目使用的通用项目是一样的如数据库访问等   只有显示层(vie ...

  9. Windows 增强版任务管理器-Process Explorer

    百度百科PROCESS EXPLORER介绍 由Sysinternals开发的Windows系统和应用程序监视工具,目前已并入微软旗下.不仅结合了Filemon(文件监视器)和Regmon(注册表监视 ...

  10. glGetString(GL_VERSION) returns “OpenGL ES-CM 1.1” but my phone supports OpenGL 2

      [问] I'm trying to make an NDK based OpenGL application. At some point in my code, I want to check ...