Oracle+Sql Server相关查询语句
上周处理过 Oracle、Sql Server 数据库相关数据,发现其实它们的 SQL 查询语句有些是不太一样的,比如行列转置和将查询结果插入新表。本人还是比较愿意写 SQL 语句的,互联网的技术日新月异,前端后端各种框架、新技术每搁几年就得更新一遍,根本学不过来,而 SQL 语句这些多却少有变化,值得好好学习。
此篇博客将会根据后续的工作持续更新。
一、Sql Server
1、查询表数据
select * from hzwater
2、截取字段
截取字段的前 6 位
select SUBSTRING(t.cbmonth,0,7) as cbmonths FROM hzwater as t
3、增加几列(行列倒置)
原表字段 mainid、user_name、user_addr、ysxz、cbmonth、biaodi、meter_no、pianqu
首先将 cbmonth 字段截取前 6 位改为 cbmonths 字段,然后再增加几行,增加几列其实是按月份增加几个字段,如需要增加 201601、201602、201603、201604、201605、201606、201607、201608、201609、201610......201812
使用 CASE......WHEN......语句实现:
select meter_no as meter_no,mainid as mainid,user_name as user_name,user_addr as user_addr,ysxz as ysxz,pianqu as pianqu,MAX(CASE cbmonths WHEN '201601' THEN cbsl ELSE 0 END) AS '201601',MAX(CASE cbmonths WHEN '201602' THEN cbsl ELSE 0 END) AS '201602',MAX(CASE cbmonths WHEN '201603' THEN cbsl ELSE 0 END) AS '201603',MAX(CASE cbmonths WHEN '201604' THEN cbsl ELSE 0 END) AS '201604',MAX(CASE cbmonths WHEN '201605' THEN cbsl ELSE 0 END) AS '201605',MAX(CASE cbmonths WHEN '201606' THEN cbsl ELSE 0 END) AS '201606',MAX(CASE cbmonths WHEN '201607' THEN cbsl ELSE 0 END) AS '201607'
from [hzwater_guotu].[dbo].middle
GROUP BY meter_no,mainid,user_name,user_addr,ysxz,pianqu
order by meter_no,user_name desc
注意:GROUP BY 后面的字段要跟前面 select 字段一样(除了 MAX(CASE...WHEN)里面的字段),否则容易出错;
得到的结果是:
4、将查询结果放入创建的新表
使用
select * into NewTablename from ...
如:
select * into middle from(select t.mainid,t.user_name,t.user_addr,t.ysxz,SUBSTRING(t.cbmonth,0,7)
as cbmonths,t.cbsl,t.biaodi,t.meter_no,t.pianqu from hzcbdata as t)b
二、Oracle
1、查询数据
select * from Temp
2、增加几列(行列倒置)
表里面原有字段为:用户类别、用户名称、用电地址、计费电量、DFNY
处理完之后表的字段为:用电类别、用户名称、用电地址、201701、201702、201703、201704、201705、201706、201708......201812
使用 decode 语句实现:
select * from (select 用电类别,用户名称,用电地址,sum (decode(dfny, '201701' , 计费电量, 0 )) "201701",sum (decode(dfny, '201702' , 计费电量, 0 )) "201702",sum (decode(dfny, '201703' , 计费电量, 0 )) "201703",sum (decode(dfny, '201704' , 计费电量, 0 )) "201704",sum (decode(dfny, '201705' , 计费电量, 0 )) "201705",sum (decode(dfny, '201706' , 计费电量, 0 )) "201706",sum (decode(dfny, '201707' , 计费电量, 0 )) "201707",sum (decode(dfny, '201708' , 计费电量, 0 )) "201708",sum (decode(dfny, '201709' , 计费电量, 0 )) "201709",sum (decode(dfny, '201710' , 计费电量, 0 )) "201710",sum (decode(dfny, '201711' , 计费电量, 0 )) "201711",sum (decode(dfny, '201712' , 计费电量, 0 )) "201712",sum (decode(dfny, '201801' , 计费电量, 0 )) "201801",sum (decode(dfny, '201802' , 计费电量, 0 )) "201802",sum (decode(dfny, '201803' , 计费电量, 0 )) "201803",sum (decode(dfny, '201804' , 计费电量, 0 )) "201804",sum (decode(dfny, '201805' , 计费电量, 0 )) "201805",sum (decode(dfny, '201806' , 计费电量, 0 )) "201806",sum (decode(dfny, '201807' , 计费电量, 0 )) "201807",sum (decode(dfny, '201808' , 计费电量, 0 )) "201808",sum (decode(dfny, '201809' , 计费电量, 0 )) "201809",sum (decode(dfny, '201810' , 计费电量, 0 )) "201810",sum (decode(dfny, '201811' , 计费电量, 0 )) "201811",sum (decode(dfny, '201812' , 计费电量, 0 )) "201812"
from TEMPDLT20191203 group by 用电类别,用户名称,用电地址)t
处理完之后的结果为:
3、将表转置并查询
select * from (select 用户名称,用电地址,sum (decode(dfny, '201701' , 计费电量, 0 )) "201701",sum (decode(dfny, '201702' , 计费电量, 0 )) "201702",sum (decode(dfny, '201703' , 计费电量, 0 )) "201703",sum (decode(dfny, '201704' , 计费电量, 0 )) "201704",sum (decode(dfny, '201705' , 计费电量, 0 )) "201705"
from TEMPDLT20191203 group by 用户名称,用电地址)t where t.用户名称='向阳';
4、将查询结果放入创建的新表
create table NewTablename as select * from b;
Oracle+Sql Server相关查询语句相关推荐
- sql server一个查询语句引发的死锁
程序错误日志大量的报死锁错误,去数据库错误日志查看确实有很多死锁(应在数据库实例启动时执行dbcc traceon(1222,-1)开启死锁跟踪): 04/29/2016 14:07:51,spid3 ...
- SQL server 高级查询语句
1.系统函数 函数名 描述 举例 convert() 数据类型转换 selece convert(varchar(5),12345) 返回:字符串12345 cast() 数据类型转换,与conver ...
- SQL Server经典查询语句练习题及答案
注意:在插入数据的时候,需要将zahowei改成中文,原数据是中文的,因为最近这个词不能过审,只能用拼音代替了,可能是那个人出了啥事吧,审核不通过就挺莫名其妙的 现在有一教学管理系统,具体的关系模式如 ...
- SQL:简单查询语句操作实例
一.SQL Server简单查询语句 背景知识: 一.查询:SQL中最基本.最常用的操作,用来对数据库进行查询 二.表达式: select 属性列 from 表 where 筛选条件 group by ...
- SQL Server 慢查询
SQL Server 慢查询语句查询 1.前10条慢查询 SELECT TOP 10[session_id],[request_id],[start_time] AS '开始时间',[status] ...
- SQL Server中T-SQL语句查询使用的函数
SQL Server中T-SQL语句查询使用的函数 一,字符串函数 字符串函数用于对字符串数据进行处理,并返回一个字符串或数字. 函数名 描述 举例 CHARINDEX 用来寻找一个指定的字符串在另一 ...
- SQL server 2008基本语句大全与提升语句
SQL server 2008 常用语句 1.基础语句 2.sql语句提升 1.基础语句 ##1.创建数据库 CREATE DATABASE database-name on primary (nam ...
- SQL Server 2016 查询存储性能优化小结
SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...
- oracle带时间查询语句,请教oracle按时间分组查询语句的写法
请教oracle按时间分组查询语句的写法 最近由于要做报表,在一张表中有一个字段为date类型,现在想要在一段时间内(比如一年)能够按照时间段分组查询记录总和,比如我要能够查询2007年到2009年间 ...
最新文章
- 2021-2027年中国室内游艺设备行业研究及前瞻分析报告
- 某程序的bug是什么意思?
- 微信公众号手机无法直接下载APK文件是怎么回事
- JSP内置对象(request、session、application)
- Android App 优化之 ANR 详解
- BAT架构师进阶:大型网站架构书籍推荐
- java 字符串指定编码输出_java对字符的编码处理
- 无代码时代来临,程序员如何保住饭碗?赶紧看一看!
- idea debug的时候 启动起来超级慢
- [Python] 字典 vars()函数:以字典类型提取对象的属性和属性值
- 对Python的初认识以及期待
- 软件测试技术之如何编写测试用例
- CAD图纸转换成高质量的彩色PDF格式如何操作?
- 在Colaboratory中使用ImageAI训练自己的数据集
- electron 打开选择文件框
- Cartographer实时显示三维点云地图
- 开水团2023届实习笔试
- 无法唤起订阅消息弹窗 requestSubscribeMessage:fail can only be invoked by user TAP gesture
- 提问(小白问题):为什么这里调试的时候无法输入
- 高中数学怎么学好如何轻松学好高中数学