动态行转列 pivot实现

declare @sql varchar(8000)
    begin
              set @sql=‘‘  --初始化变量@sql
              select  @[email protected]+‘,[‘+ convert(varchar(10),CreateDate,120)+‘]‘ from  vwStationYield
              where CreateDate > DATEADD(dd,-14,convert(varchar(10),getdate(),120))  group by convert(varchar(10),CreateDate,120)--变量多值赋值
              
              set @sql=stuff(@sql,1,1,‘‘)--去掉首个‘,‘
              print @sql

set @sql=‘select * from (select  Product ,Yield, CreateDate from vwStationYield)as st
     pivot --行转列
         (max(Yield) for CreateDate in(‘[email protected]+‘))as p‘
    exec(@sql)
    end

动态行转列 pivot实现

时间: 2024-08-03 15:07:06

动态行转列 pivot实现的相关文章

Sql 动态行转列 pivot

最近朋友有个需求:将产品中为“期刊”的书品以行转列的形式展现,同时需要关联工单主表及工单明细表,显示内容为,工单号.操作日期.产品名称及数量,由于期刊的产品数量较多,静态的虽然可以实现,但不利于后续内容的添加,就想着如何能以动态的形式展现,自动拼接sql语句处理,具体实现过程如下. 产品信息表需用到的字段内容: select ProductCode,Name from ComProduct where ProductType ='20' 工单需要用到的内容: select JobNo,Produ

[MSSQL]采用pivot函数实现动态行转列

环境要求:2005+ 在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理. 在sql 2005以前处理动态行或列的时候,通常采用拼接字符串的方法处理,在2005以后新增了pivot函数之后,我可以利用这样函数来处理. 1.动态SQL注入式判断函数 --既然是用到了动态SQL,就有一个老话题:SQL注入.建一个注入性字符的判断函数. CREATE FUNCTION [dbo].[fn_CheckSQLInjection] ( @Col nvar

[MSSQL]採用pivot函数实现动态行转列

环境要求:2005+ 在日常需求中常常会有行转列的事情需求处理.假设不是动态的行,那么我们能够採取case when 罗列处理. 在sql 2005曾经处理动态行或列的时候,通常採用拼接字符串的方法处理.在2005以后新增了pivot函数之后,我能够利用这样函数来处理. 1.动态SQL注入式推断函数 --既然是用到了动态SQL,就有一个老话题:SQL注入. 建一个注入性字符的推断函数. CREATE FUNCTION [dbo].[fn_CheckSQLInjection] ( @Col nva

oracle 使用pivot 函数进行批量数据的动态行转列

公司业务要求,需要对一批数据大批量地进行动态行转列之后进行分析,而pivot 函数in中不能使用子查询,有个方法是说可以通过动态sql拼接的方法实现, 在网上找了很久之后没找到具体的方法,就自己去摸索实现了.具体方法如下. 因为需要实现的是动态行转列,所以需要先用wm_concat(distinct())函数单独查出列名,再用dbms_lob.substr()将clob字段转成字符串.然后动态拼接得出的列名来进行查询.建个视图存放查询的结果就可以直接查需要的表啦.具体的代码如下: PROCEDU

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的

动态行转列小记

数据库环境:SQL SERVER 2005 最近在整理数据时,要将查询到的数据张贴到Excel中.在Excel中,要展示的行数是固定的,列数不固定, 一个一个数据的复制张贴太烦人.想了一个偷懒的方法,直接将查询的数据进行行转列,达到和Excel中的效果一致, 再整列复制到Excel中. 1.创建测试表,导入测试数据 /*从系统表sysobjects取出name字段的42行数据,用作测试数据*/ WITH x0 AS ( SELECT TOP 42 name FROM sysobjects ),/

MySQL 行转列 -》动态行转列 -》动态行转列带计算

Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql/ Cross-Tabulation (Pivot Tables) with MySQL - CodeProjecthttps://www.codeproject.com/articles/363339/cross-tabulation-pivot-tables-with-mysql Pivot T

sql 行转列 PIVOT 列转行 UNPIVOT

原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 22 2013 公司3 32 2012 公司1 42 2012 公司2 52 2012 公司3 62 表二: 年 公司1 公司2 公司3 2012 42 52 62 2013 12 22 32 可使用sql2005之后提供的PIVOT 具体操作如下: select * from   t_table1

SQL server 动态行转列

在学习数据库的时候,遇到了怎么把数据表中的内容转变成数据表的字段,在此,记录一下自己对行转列的理解 比如有个学生成绩表: stuid:学号 course:科目 score:成绩 表的内容为: stuid course score 0101 语文     78 0101 数学     90 0101 英语     67 0101 物理     88 而我们想要的是类似下表: stuid 语文 数学 英语 物理 0101  78 90 67  88 这个时候就需要用到行转列,行转列有动态与静态之分: