专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
阿里云大数据AI平台  ·  【5月重点功能发布】阿里云大数据+ AI ... ·  4 小时前  
阿里云大数据AI平台  ·  【5月重点功能发布】阿里云大数据+ AI ... ·  4 小时前  
数据分析与开发  ·  突发!Anthropic 断供 ... ·  8 小时前  
数据中心运维管理  ·  施耐德电气PowerLogic™ ... ·  2 天前  
数据中心运维管理  ·  6月1日起实施!我国首部绿色数据中心评价国标 ... ·  2 天前  
数据中心运维管理  ·  应急预案和应急演练到底怎么做? ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

重温 SQL ——行转列,列转行

数据分析与开发  · 公众号  · 数据库  · 2017-05-14 20:04

正文

请到「今天看啥」查看全文


Subject WHEN '生物' THEN Score ELSE 0 END ) AS '生物'

FROM dbo.[StudentScores]

GROUP BY UserName


查询结果如图所示,这样我们就能很清楚的了解每位学生所有的成绩了


接下来我们来看看第二个小列子。有一个游戏玩家充值表(仅仅为了说明,举的一个小例子),


CREATE TABLE [Inpours]

(

[ID] INT IDENTITY(1,1),

[UserName] NVARCHAR(20), --游戏玩家

[CreateTime] DATETIME , --充值时间

[PayType] NVARCHAR(20), --充值类型

[Money] DECIMAL , --充值金额

[IsSuccess] BIT , --是否成功 1表示成功, 0表示失败

CONSTRAINT [PK_Inpours_ID] PRIMARY KEY (ID)

)

INSERT INTO Inpours SELECT '张三' , '2010-05-01' , '支付宝' , 50, 1

INSERT INTO Inpours SELECT '张三' , '2010-06-14' , '支付宝' , 50, 1

INSERT INTO Inpours SELECT '张三' , '2010-06-14' , '手机短信' , 100, 1

INSERT INTO Inpours SELECT '李四' , '2010-06-14' , '手机短信' , 100, 1

INSERT INTO Inpours SELECT '李四' , '2010-07-14' , '支付宝' , 100, 1

INSERT INTO Inpours SELECT '王五' , '2010-07-14' , '工商银行卡' , 100, 1

INSERT INTO Inpours SELECT '赵六' , '2010-07-14' , '建设银行卡' , 100, 1


下面来了一个统计数据的需求,要求按日期、支付方式来统计充值金额信息。这也是一个典型的行转列的例子。我们可以通过下面的脚本来达到目的


SELECT CONVERT ( VARCHAR (10), CreateTime, 120) AS CreateTime,

CASE PayType WHEN '支付宝' THEN SUM (Money) ELSE 0 END AS







请到「今天看啥」查看全文