语句: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_mysql 的行转列 PIVOT 的使用相关推荐

  1. Oracle之行转列pivot函数

    文章目录 方法一: Oracle行转列pivot函数 方法二:使用MAX DECODE 实现 方法一: Oracle行转列pivot函数 语法:pivot(任一聚合函数 for 需要转列的值所在列名 ...

  2. mysql中将列动态转换为行,mysql 行转列 MySQL数据库动态行转列

    想把mysql一个表的行转成列,图1是原表,想实现图2的样式SELECT MAX(CAS就是一个动态的行列转换 CREATE TABLE `c_wssb_zz` ( `aa011` varchar(1 ...

  3. mysql unpivot_SQL行转列(PIVOT)与列转行(UNPIVOT)简明方法

    在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测 ...

  4. mysql 列转行 unpivot_sql的行转列(PIVOT)与列转行(UNPIVOT)

    一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30) ...

  5. oracle非常量不能用于privot_Oracle 行转列(pivot、wm_concat、decode)使用总结(转载)...

    偶然需要了解,学习了这篇文章,转载记录一下 自:http://blog.csdn.net/jxzkin/article/details/7949629 1.创建测试数据CREATE TABLE CC ...

  6. 大剑无锋之mysql中的行转列如何写?【面试推荐】

    乍一看,这样的题写过的. 像 SparkSQL读取hive中的数据,行转列的两种方式[行转列专用函数,UDAF]https://blog.csdn.net/qq_41946557/article/de ...

  7. MySQL 如何实现行转列分级输出?

    概述 好久没写SQL语句,今天看到问答中的一个问题,拿来研究一下. 问题链接:关于Mysql 的分级输出问题 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当 ...

  8. oracle unpivot 索引_Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  9. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现 [sql] view plaincopy print? select concat(id,username) str from app_u ...

最新文章

  1. 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常
  2. Load 和 DOMContentLoaded 区别
  3. 2.STM32中对Key_GPIO_Config()函数的理解(自定义)之轮询控制按键LED
  4. 写给初学者的JavaScript异步编程和背后思想
  5. centos 7 密码破解 rm -rf 删除恢复
  6. 2017年,这两个大数据岗位一定会火!
  7. Javascript JSON格式
  8. Mac或者Linux安装RabbitMQ
  9. 读懂Android中的代码混淆
  10. php 关闭 row,MySql php:检查Row是否存在
  11. 如何打造一个让粉丝一见就能收钱的朋友圈
  12. 16. Use the same form in correspondng uses of new and delete
  13. 一份神奇的礼物(1)
  14. SQL server 字符串 转 日期格式
  15. 百度编辑器设置上传文件大小
  16. linux外接无线网卡,外接无线网卡+linux配置指南
  17. win10中查看wifi密码
  18. 解决 jack server is not running
  19. 安卓系统安全学习小结(二)
  20. html转盘游戏,使用Javascript和CSS3实现一个转盘小游戏(实战篇)

热门文章

  1. teradata查看正在运行的进程_goldengate 进程在oracle数据库哪个视图
  2. python语言中reverse_Python 反转字符串(reverse)的方法小结
  3. MLU100设备插件(Kubernetes)
  4. ac 计算机考试,计算机接口试2010考试题Achenlin.doc
  5. 数据结构——堆(C++)
  6. HTTP代理504网关超时错误如何修复?
  7. LDR6020 【USB_C显示器方案】台式显示器方案介绍
  8. vue报错【解决方案】 [Violation] Added non-passive event listener to a scroll-blocking <some> event.
  9. docker打开2375监听端口
  10. 王石、解海龙担任深圳市慈善会首届形象大使