前言

最近遇到一些老项目,在实施过程中需要切换数据库,遇到了好几处行转列的语法,在网上找了一些资料后,都不能很好的解释分析,下面我将个人在工作中遇到的一些问题以及解决方案详细的描述记录下来,如果有遇到相同问题的同学,希望可以能帮助到您

一、oracle行转列

select *from (
select substr(fprkd_ywqj,5,2),'25' ri,'调' lx ,fprkd_bh,fprkd_xmMC,fprkd_ID,0 fprkd_sl,0,0,  nvl(yfgs, 0) yfgs, nvl(efgs, 0) efgs, nvl(sfgs, 0) sfgs, nvl(lfgs, 0) lfgs,nvl(bfgs, 0) bfgs,nvl(xbgs, 0) xbgs,nvl(gzgs, 0) gzgs,nvl(sygs, 0) sygs,nvl(gxgs, 0) gxgs,'e259c0f2a3054b54bb5dafd430ef97b6' ysid   from (
select  xmxx_dwmc,FPRKD_YWQJ,'调' lx,fprkd_bh,fprkd_xmMC,FPRKD_SL,fprkd_ID
from pmmmfprkd left join pmpmxmxx on xmxx_xmid=fprkd_xmid
where 1 = 1
and fprkd_ywqj ='#ND#'
and FPRKD_gxzt >= '5'
and fprkd_xmmc not like '%测试%'
)aa PIVOT(SUM(FPRKD_SL) FOR xmxx_dwmc in ('第一工程公司' yfgs,'第二工程公司' efgs,'第三工程公司' sfgs,'第六工程公司' lfgs,'第八工程公司'bfgs,'西北公司' xbgs,'广州工程公司'gzgs,'沈阳工程公司' sygs,'广西工程公司' gxgs)))aa order by fprkd_BH,lx desc,yd asc

这个是项目中目前的报表取数,可以看到最后用到了PIVOT函数,此处就不重点讲解了,小伙伴们可自行查询下用法,这个函数在报表取数时经常会用到,它实现了标准的行转列。

二、sqlserver中行转列的用法

select *from (
select SUBSTRING(fprkd_ywqj,5,2),'25' ri,'调' lx ,fprkd_bh,fprkd_xmMC,fprkd_ID,0 fprkd_sl,0,0,
[第一工程公司] yfgs,[第二工程公司] efgs,[第三工程公司] sfgs,
[第六工程公司] lfgs,[第八工程公司] bfgs,
[西北公司] xbgs,[广州工程公司] gzgs,[沈阳工程公司] sygs,
[广西工程公司] gxgs,
'e259c0f2a3054b54bb5dafd430ef97b6' ysid   from (
select  xmxx_dwmc,FPRKD_YWQJ,'调' lx,fprkd_bh,fprkd_xmMC,FPRKD_SL,fprkd_ID
from pmmmfprkd left join pmpmxmxx on xmxx_xmid=fprkd_xmid
where 1 = 1
and fprkd_ywqj ='#ND#'
and FPRKD_gxzt >= '5'
and fprkd_xmmc not like '%测试%'
)aa PIVOT(SUM(FPRKD_SL) FOR xmxx_dwmc in ([第一工程公司],[第二工程公司],
[第三工程公司],[第六工程公司],[第八工程公司],
[西北公司],[广州工程公司],[沈阳工程公司],
[广西工程公司]))  as T)aa order by fprkd_BH,lx desc,yd asc

三、sql分析

通过上面俩个标准sql,我们可以看到oracle和sqlserver的行转列语法还是有明显的区别,都使用PIVOT函数,但是在数据字段取别名的时候,有明显的不同,oracle是直接在函数里就对分组组名进行别名,但是sqlserver只能在函数外部进行取别名,此处是特别需要重视的地方,要不就会一直查询失败。

oracle行转列和sqlserver行转列语法分析比对相关推荐

  1. oracle 动态sql列转行_Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  2. SQLServer 行转列,统计,二次分组

    create table test (   bizdate datetime, --日期   classes varchar(50), --班次 '白班' 或 '夜班'   qty int --产量 ...

  3. 设置oracle每行显示字符个数,Oracle一列的多行数据拼成一行显示字符-Oracle

    Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CONCAT 例: ...

  4. Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  5. sql拼接同一字段中的数据_用SQL将Oracle中同一列的多行记录拼接成一个字符

    用SQL将Oracle中同一列的多行记录拼接成一个字符串 用SQL将Oracle中同一列的多行记录拼接成一个字符串 [sql] -- 原始数据 -- a   111 -- b   222 -- a   ...

  6. oracle 行转列sql语句,行转列(sql行转列)

    sql语句行转列?怎么转啊 select MIN(id) as ID, name, sex, sum(case when num=2 then 2 end) as num2, sum(case whe ...

  7. SQLSERVER将多行转为一行,并将某列的内容作为多列标题

    本文目的:将多行转为一行,并将某列的内容作为多列标题. SELECT DISTINCT TOP 50000 pom.billing_date,pom.production_no AS 工卡,pom.c ...

  8. 【DB笔试面试622】在Oracle中,说说COUNT(*)计算行数有哪些优化手段?

    ♣ 题目部分 在Oracle中,说说COUNT(*)计算行数有哪些优化手段? ♣ 答案部分 手段 命令 执行计划 主要原理 详细说明 性能情况 全表扫描 TABLE ACCESS FULL 全表扫描 ...

  9. PostgreSQL列存与行存

    列存优势: 1.列存没有行存1666列的限制 2.列存的大量记录数扫描比行存节约资源 3.列存压缩比高,节约空间 4.列存的大量数据计算可以使用向量化执行,效率高 行存优势: 1.行存查询多列时快 2 ...

最新文章

  1. IJCAI 2019精选论文一览,从底层到应用都有了
  2. soundtouch源码分析__based on csdn :
  3. mysql事务并发控制_mysql事务和多版本并发控制详解
  4. [Leetcode] 445. Add Two Numbers II
  5. python canny优化_python实现canny边缘检测
  6. JS使用setInterval定时器导致前端页面卡死
  7. Linux运维从入门到进阶
  8. Android 最常用的设计模式九 安卓源码分析—— 适配器模式(Adapter)
  9. 9 Creating a Chain of Effects
  10. 压力换算公斤单位换算_常用压力单位换算表
  11. 论文特色自我评价内容结构
  12. 回眸 2021,展望 2022
  13. 小卡的土豆园开园了~
  14. base64编码转换android,Android将base64编码转化成图片
  15. 城市扩张对生境质量影响评价与生态安全格局构建—以黄河流域“几”字弯为例
  16. 推荐几个学习的公众号
  17. pdf处理软件哪个好?超实用软件裂墙推荐
  18. php声明变量不赋值,PHP中变量无需另外声明,可在赋值时直接创建。
  19. 基于JAVAMVC的时鲜蔬菜配送系统计算机毕业设计源码+系统+lw文档+部署
  20. 怎样更改计算机文件图标,如何更改文件图标,教您Win7如何更改图标

热门文章

  1. 造梦西游html5,造梦西游OL(新服开启)
  2. 详解静态成员 什么是静态成员,静态成员和普通成员的区别
  3. 核心单词课--补充记录
  4. [LeetCode]动态规划解拆分整数I[Silver Fox]
  5. 一个印章管理员的自白:这些用章、管章套路,得防!
  6. 【LaTeX】LaTeX Tutorial
  7. MacbookPro M1安装confluent-kafka
  8. 问题 C: 身份证号码
  9. .NET Web开发部分试题(超级简单易学)
  10. wampserver3.1.7_x64启动后橙色不变绿解决办法