数据库行列转换sql
经常折腾数据库,常常遇到数据库行列转换的问题,下面就用一个小例子来演示下如何进行行列转换。
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的更多相关文章
- (sql server)玩转-数据库行列转换
虽然开发过程中没用过行列转换,但是听说面试时常常会遇到这个问题,以前在网上也看到过大神的例子,今天自己仔细的玩了下,希望和大家分享一下了. 注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦 ...
- SQL2005数据库行列转换
注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns (一)行转列的方法 先说说行转列的方法,这个就比较好想了,利用拼sql和case wh ...
- 最近整理的一些行列转换sql(有自己的,有别人的),留作记录
--case when 经典用法SELECT * FROM (SELECT 1 NUM, '奖项金额', SUM(CASE WHEN ...
- SqlServer2000下实现行列转换
SqlServer2000下实现行列转换 2011-04-06 22:07:07| 分类: SQL Server | 标签:sqlserver 2000 行列转换 sql |举报|字号 订 ...
- [数据库] SQL查询语句表行列转换及一行数据转换成两列
原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...
- SQL Server中行列转换 Pivot UnPivot
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
有同学问了个比较典型行列转换的问题,想想,解答如下:数据库有一张表: 是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品: 哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的 ...
- SQL行列转换6种方法
在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解 ...
- SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
随机推荐
- BERT的开源实现的使用
参考这篇文章: 小数据福音!BERT在极小数据下带来显著提升的开源实现 https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=224749 ...
- ORM数据库框架 greenDAO SQLite MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 转:UFLDL_Tutorial 笔记(deep learning绝佳的入门资料 )
http://blog.csdn.net/dinosoft/article/details/50103503 推荐一个deep learning绝佳的入门资料 * UFLDL(Unsupervised ...
- Java-Shiro(一):简介
简介 Apache Shiro是Java的一个安全权限框架. Shiro可以非常容易的开发出足够好的额应用,其不仅可以用在JavaSE环境,也可以用在Java SE环境. Shiro可以完成:认证.授 ...
- 大智慧专业财务PFFIN(N,M)函数N的取值一览表
每股指标 1001 摊薄每股收益 1002 净资产收益率 1003 每股经营活动现金流量 1004 每股净资产 1005 每股资本公积金 1006 每股未分配利润 1007 每股主营收入 1008 扣 ...
- python性能还是不错的
一个未优化的程序,跑了四天,字典长度有15万条,每条40个字段,跑得还算不错. 刚刚优化后的: 等运行两天后再看看效果...
- 一步一步教你搭建和使用FitNesse
啄木鸟之家大吕 敏捷测试已成为现在式,尽早和持续的反馈成为各研发团队的必选项.测试同学也需要跟上这个趋势.除了“找bug”.“分析需求”.“功能测试”,还需考虑“交付质量.一次做对.在没有用户界面情况 ...
- Tone Mapping算法系列一:基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
一.引言 本人初次接触HDR方面的知识,有描述不正确的地方烦请见谅. 为方便文章描述,引用部分百度中的文章对HDR图像进行简单的描述. 高动态范围图像(High-Dynamic Range,简称HDR ...
- css样式小技巧
1.css样式小技巧 HTML怎样设定使背景图片不随页面滚动而滚动 background-attachment:fixed; 2.实现li a 超过长度内容出现省略号… overflow:hidden ...
- 关于微服务、SOA、以及API的理解
现在微服务.SOA.RESTful API设计等在各大公司很流行.微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊.Google.FaceBook,Aliba ...