mysql行转列sql函数_sql 用select语句进行行转列

展开全部

我们来看看一个小列子。有一个游戏玩家e68a8462616964757a686964616f31333363393066充值表(仅仅为了说明,举的一个小例子),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

CreateTime, [支付宝] , [手机短信],

[工商银行卡] , [建设银行卡]

FROM

(

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

FROM Inpours

) P

PIVOT (

SUM(Money)

FOR PayType IN

([支付宝], [手机短信], [工商银行卡], [建设银行卡])

) AS T

ORDER BY CreateTime

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值