mysql 的行转列 PIVOT 的使用
语句:SELECT DataDate ,
PropertyText ,
DataValue
FROM RPT_ReportProperty p WITH ( NOLOCK ) JOIN RPT_ReportData d WITH ( NOLOCK ) ON p.PropertyID = d.PropertyID
WHERE d.ReportID = '3'
AND DataDate >= '06 25 2018 12:00AM'
AND DataDate < '07 16 2018 12:00AM'
AND DataParam = '日本'
结果:

语句:
SELECT [月份],[日期],[入库单量],[入库及时率],[延误入库单量],[异常入库单量]
FROM ( SELECT DataDate ,
PropertyText ,
DataValue
FROM RPT_ReportProperty p WITH ( NOLOCK ) JOIN RPT_ReportData d WITH ( NOLOCK ) ON p.PropertyID = d.PropertyID
WHERE d.ReportID = '3'
AND DataDate >= '06 25 2018 12:00AM'
AND DataDate < '07 16 2018 12:00AM'
AND DataParam = '日本'
) tb PIVOT ( MAX(DataValue) FOR PropertyText IN ( [月份],[日期],[入库单量],[入库及时率],[延误入库单量],[异常入库单量] ) ) a;
结果:

3.执行的语句
DECLARE @limitDay INT;
SET @limitDay = 35;
IF DATEDIFF(DAY, '2018-06-25 00:00:00', '2018-07-16 00:00:00') > @limitDay
BEGIN
RETURN;
END;
DECLARE @ReportID INT= 3;
DECLARE @BeginDateTime DATETIME= '2018-06-25 00:00:00';
DECLARE @EndDateTime DATETIME= '2018-07-16 00:00:00';
DECLARE @DataParam VARCHAR(50)= '日本';
EXEC dbo.Proc_GetReportData @ReportID, @BeginDateTime, @EndDateTime,
@DataParam;
存储过程:Proc_GetReportData
USE [Tr.TWX]
GO
/****** Object: StoredProcedure [dbo].[Proc_GetReportData] Script Date: 2018/7/16 15:08:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Proc_GetReportData]
@ReportID VARCHAR(5) ,
@BeginDateTime VARCHAR(25) ,
@EndDateTime VARCHAR(25),
@DataParam VARCHAR(50)=NULL
AS
BEGIN
DECLARE @sql VARCHAR(5000)
SELECT @sql = ISNULL(@sql + ',', '') + '[' + PropertyText + ']'
FROM RPT_ReportProperty WITH ( NOLOCK )
WHERE ReportID = @ReportID
AND StatusFlag = 1
IF @DataParam IS NULL OR @DataParam=''
BEGIN
SET @sql = 'select ' + @sql
+ ' from(SELECT DataDate,PropertyText,DataValue FROM RPT_ReportProperty p WITH(NOLOCK) JOIN RPT_ReportData d WITH(NOLOCK) ON p.PropertyID=d.PropertyID WHERE d.ReportID='''
+ @ReportID + ''' AND DataDate>= ''' + @BeginDateTime
+ ''' AND DataDate< ''' + @EndDateTime
+ ''')tb pivot (max(DataValue) for PropertyText in (' + @sql
+ '))a'
END
ELSE
BEGIN
SET @sql = 'select ' + @sql
+ ' from(SELECT DataDate,PropertyText,DataValue FROM RPT_ReportProperty p WITH(NOLOCK) JOIN RPT_ReportData d WITH(NOLOCK) ON p.PropertyID=d.PropertyID WHERE d.ReportID='''
+ @ReportID + ''' AND DataDate>= ''' + @BeginDateTime
+ ''' AND DataDate< ''' + @EndDateTime
+ ''' AND DataParam= ''' + @DataParam
+ ''')tb pivot (max(DataValue) for PropertyText in (' + @sql
+ '))a'
END
EXEC(@sql)
END
GO
-------------------------------------------附加信息:-----------------------------------
SELECT * FROM RPT_Report --需要查询的数据
SELECT * FROM RPT_ReportScheduler ORDER BY CreateTime DESC --添加临时执行任务 循环表RPT_Report数据加到RPT_ReportScheduler
SELECT * FROM RPT_ReportProperty p WHERE PropertyText IN ( '月份','日期','入库单量','入库及时率','延误入库单量','异常入库单量' ) AND p.ReportID=3 --事先已经加入到统计查询语句
SELECT TOP 50 * FROM RPT_ReportData WHERE ReportID=3 ORDER BY CreateTime DESC --执行后的数据放在此表

在调度下面的:BusinessReportAnalysisScheduler
相关的表在百度云:TWX/定时统计报表的统计数据(各表).xls
mysql 的行转列 PIVOT 的使用的更多相关文章
- sql 行转列 PIVOT 列转行 UNPIVOT
原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 ...
- 关于MySQL的行转列的简单应用(二)---group函数
MySQL的行转列.列转行.连接字符串 concat.concat_ws.group_concat函数用法使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一 ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- mysql之行转列与列转行
mysql之行转列与列转行是数据查询的常见操作,以更好的来展示数据,下面就详细说说怎么实现. 行转列 行转列的话,就是将一条一条的行数据记录转换为一条列数据展示,一般来说是根据某一列来做汇总数据的操作 ...
- sql的行转列(PIVOT)与列转行(UNPIVOT)
在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测 ...
- sql server 行转列 Pivot UnPivot
SQL Server中行列转换 Pivot UnPivot 本文转自:张志涛 原文地址: http://www.cnblogs.com/zhangzt/archive/2010/07/29/17878 ...
- SQL 行转列 PIVOT 学习示例
CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) select * from [StudentScores] ...
- Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...
- SQL行转列(PIVOT)与列转行(UNPIVOT)简明方法
原文地址:https://www.cnblogs.com/linJie1930906722/p/6036714.html 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻 ...
随机推荐
- 剑指Offer——和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...
- 基于Maven的SSM框架搭建
Maven + Spring + Spring MVC + Mybatis + MySQL整合SSM框架 1.数据库准备 本文主要想实现SSM框架的搭建,并基于该框架实现简单的登录功能,那么先新建一张 ...
- django 模板语言之 simple_tag 自定义模板
自定义函数 simple_tag a. app项目下创建templatetags目录 b. 创建任意xxoo.py文件 用做自定义py函数 c. 创建template对象 register 在函数或者 ...
- 使用php来操作EXCEL文件
最近,刚过完年,部门想要统计一下去年部门的各种各样的一些数据,因此有一些EXCEL表格中的数据统计难以实现,需要借助程序来完成复杂的数据统计,因此自己最近也了解 了一下关于php操作excel的一些东 ...
- js中将Object转换为String函数代码
经常会碰到结果对象是object而无法查看该对象里面的内容而苦恼,有下面这个函数就好了,可以将其转化为字符串类型,然后就可以打印出来了,具体代码如下: function obj2string(o){ ...
- UVA10026:Shoemaker's Problem(贪心)
题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/K 题目需求:鞋匠有n个任务,第i个任务要花费ti ...
- Xcode8免证书生产IPA打包文件
免证书生产IPA打包文件 修改Xcode配置文件: 关闭Xcode.然后打开“其他-终端”,就是命令行工具 cd /Applications/Xcode.app/Contents/Develope ...
- PHP闭包(Closure)初探(转载 http://my.oschina.net/melonol/blog/126694?p=2#comments)
匿名函数 提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: ? 1 2 3 $func = function() { ...
- 360急速浏览器JS的调试
1.代码中添加debugger关键字 2.360急速浏览器中选择工具--开发人员选项,如下图所示,在sources面板中可以看到正在运行的JS代码,F10可以单步函数执行,在鼠标放在变量上可以跟踪变量 ...
- LRU算法---缓存淘汰算法
计算机中的缓存大小是有限的,如果对所有数据都缓存,肯定是不现实的,所以需要有一种淘汰机制,用于将一些暂时没有用的数据给淘汰掉,以换入新鲜的数据进来,这样可以提高缓存的命中率,减少磁盘访问的次数. LR ...