多列的行列转换(PIVOT,UNPIVOT)
VUIU.png)



SELECT [Week] AS [Date],[Total] AS WeeklyTotal
,[Monday]
,[Tuesday]
,[Wednesday]
,[Thursday]
,[Friday]
,[Saturday]
,[Sunday]
FROM
(
SELECT [Date],Data,[Week]
FROM
(
SELECT A.Date
--CONVERT(VARCHAR(5),A.Date,101) AS [Date]
,CONVERT(VARCHAR(20),A.NewVIPCounts) AS 新注册会员-- NewVIPCounts
,CONVERT(VARCHAR(20),B.ShoppingVIPCounts) AS 消费会员数-- ShoppingVIPCounts
,CONVERT(VARCHAR(20),ROUND(CONVERT(NUMERIC,C.TotalSaleAmount),0)) AS 总销售额-- TotalSaleAmount
,CONVERT(VARCHAR(20),ROUND(CONVERT(NUMERIC,D.VIPSaleAmount),0)) AS 会员销售-- VIPSaleAmount
,CONVERT(VARCHAR(20),E.VIPBillCounts) AS 会员小票数-- VIPBillCounts
,CONVERT(VARCHAR(20),F.TotalBillCounts) AS 总小票数--TotalBillCounts
,CONVERT(VARCHAR(20),G.FirstBuyCounts) AS 初次购买会员数
,非会员小票数=CONVERT(VARCHAR(20),(F.TotalBillCounts-E.VIPBillCounts) )
,会员销售比重=CONVERT(VARCHAR(20),CONVERT(VARCHAR(20),ROUND(CONVERT(FLOAT,(D.VIPSaleAmount/C.TotalSaleAmount)),3)*100)+'%')
,非会员小票客单价=CONVERT(VARCHAR(20),ROUND(CONVERT(NUMERIC,((C.TotalSaleAmount-D.VIPSaleAmount)/(F.TotalBillCounts-E.VIPBillCounts))),0))
,会员小票客单价=CONVERT(VARCHAR(20),ROUND(CONVERT(NUMERIC,(D.VIPSaleAmount/E.VIPBillCounts)),0))
,会员小票数占比=CONVERT(VARCHAR(20),CONVERT(VARCHAR(20),ROUND(CONVERT(FLOAT,(CONVERT(NUMERIC,E.VIPBillCounts)/CONVERT(NUMERIC,F.TotalBillCounts))),3)*100)+'%')
,初次购买会员数占比=CONVERT(VARCHAR(20),CONVERT(VARCHAR(20),ROUND(CONVERT(FLOAT,(CONVERT(NUMERIC,G.FirstBuyCounts)/CONVERT(NUMERIC,B.ShoppingVIPCounts))),3)*100)+'%')
FROM #T1 A
JOIN #T2 B ON A.Date=B.Date
JOIN #T3 C ON B.Date=C.Date
JOIN #T4 D ON C.Date=D.Date
JOIN #T5 E ON D.Date=E.Date
JOIN #T6 F ON E.Date=F.Date
JOIN #T7 G ON F.Date=G.Date
)AS X
UNPIVOT (
Data FOR [Week]
IN(
新注册会员,消费会员数,总销售额,会员销售,非会员小票客单价,非会员小票数
,会员小票客单价,会员小票数
,总小票数,会员销售比重,初次购买会员数,会员小票数占比,初次购买会员数占比
)
)AS Y
) AS p
PIVOT
(
Max(p.Data) FOR [Date] IN([Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday],[Sunday],[Total])
) AS uu
多列的行列转换(PIVOT,UNPIVOT)的更多相关文章
- SQL Server中行列转换 Pivot UnPivot
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...
- SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...
- SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列)FOR 列 in (-) )AS P 完 ...
- SQLServer中行列转换Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P ...
- 【转】Spark实现行列转换pivot和unpivot
背景 做过数据清洗ETL工作的都知道,行列转换是一个常见的数据整理需求.在不同的编程语言中有不同的实现方法,比如SQL中使用case+group,或者Power BI的M语言中用拖放组件实现.今天正好 ...
- sql行列转换PIVOT与unPIVOT
基本语法 select * from Mould pivot ( count(ID)for ProductTypeCode in ( [FC], [RCU], [RCD] )) as PVT; wit ...
- 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)
在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...
- SQL中行列转换Pivot
--建表 ),课程 ),分数 int) --插入数据 ) ) ) ) ) ) 1.静态行转列(确定有哪些列) select 姓名, end)语文, end)数学, end)物理 from tb gro ...
- 行列转换 pivot
select * from ( select isnull(c.type,'其他') type,d from ( select ID,Record_code,code,day(thedate) d f ...
随机推荐
- Android Studio 运行、编译卡死的解决办法
Android stuido作为google主推的IDE,配合gradle编译,有很多的优点和便捷性.唯一使用过程中不舒服的地方就是莫名其妙的卡顿,经常在Gradle Build的时候卡死强制重启电脑 ...
- 在前台运行Service
一个前台的 service是被用户强烈关注的从而不会在内存低时被系统杀死.前台 service必须在状态栏上提供一个通知,这个通知被放在"正在进行"区域中,这表示这个通知不能被解除,除非服务停止了或者 ...
- Android日志框架darks-logs使用教程
一.配置文件 在使用darks-logs之前,我们需要为它创建一个名叫logd.properties的配置文件.如果你是需要在JAVA或WEB上使用该组件,那么你可以像配置log4j一样将它放在cla ...
- [LeetCode#84]Largest Rectangle in Histogram
Problem: Given n non-negative integers representing the histogram's bar height where the width of ea ...
- 【转】Android Fragment 基本介绍--不错
原文网址:http://www.cnblogs.com/mengdd/archive/2013/01/08/2851368.html Fragment Android是在Android 3.0 (AP ...
- [转载] cookie、JS记录及跳转到页面原来的位置
额....如下 <!-- 定位页面的 Cookie function SetCookie(sName, sValue) { date = new Date(); s = date.getDate ...
- Linux学习笔记19——信号2
上一节中讲到了sigprocmask函数,它的作用是检查或修改它的进程信号掩码,这一节我们主要学习捕捉与忽略信号的函数sigaction和等待信号函数. 一 sigaction函数的作用 定义在接收 ...
- Hibernate(八)一对多单向关联映射
上次的博文Hibernate从入门到精通(七)多对一单向关联映射我们主要讲解了一下多对一单向关联映射, 这次我们继续讲解一下一对多单向映射. 一对多单向关联映射 在讲解一对多单向关联之前,按 照我们的 ...
- 把测试app打包成ipa文件
我终于把我的程序放到我的touch上了,其实把app放到touch上还有很多办法,这篇教程是主要讲怎么把app注册了,然后打包成一个ipa文件的. 先上官方文档:https://developer.a ...
- StoryBoard 的使用
简单入门: http://my.oschina.net/plumsoft/blog/53886 详细操作:http://www.cnblogs.com/buro79xxd/archive/2012/0 ...