SQL SERVER 月、季、年统计与常用查询语句汇总

一、SQL SERVER 月、季、年统计查询

--本天

SELECT *FROM dbo.TableName WHERE DATEDIFF(DAY,TimeField,getdate())= 0;

--本周

SELECT *FROM dbo.TableName WHERE DATEDIFF(WEEK,TimeField,getdate())= 0;

--本月

SELECT *FROM dbo.TableName WHERE DATEDIFF(MONTH,TimeField,getdate())= 0;

--本季度

SELECT *FROM dbo.TableName WHERE DATEPART(qq, TimeField) = DATEPART(qq, GETDATE()) and DATEPART(yy, TimeField) = DATEPART(yy, GETDATE());

--本年

SELECT *FROM dbo.TableName where DATEDIFF(YEAR, TimeField,getdate())= 0;

注:TableName为查询的表名,TimeFiled为查询的时间字段

二、SQL SERVER 判断表、字段、存储过程、触发器是否存在

--判断表是否存在

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘表名‘) AND OBJECTPROPERTY(object_id, N‘IsUserTable‘) = 1

--或

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘表名‘) AND type=‘u‘

--判断字段是否存在

SELECT *FROM sys.columns WHERE OBJECT_ID = OBJECT_ID(‘字段名‘) AND Name = ‘No‘

--判断存储过程是否存在

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘存储过程名‘) AND

OBJECTPROPERTY(object_id, N‘IsProcedure‘) = 1

--或

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘存储过程名‘) AND type=‘p‘

--判断触发器是否存在

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘触发器名‘) AND OBJECTPROPERTY(object_id, N‘IsTrigger‘) = 1

--或

SELECT *FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(‘触发器名‘) AND type=‘TR‘

三 、表复制语句

-- 要求表2不存在,查询时自动创建

Select Field1,Field2 from Table1 Into Table2

--要求表2必须存在,可以插入常量

Insert into table2 (Field1,Field2) select Field1,Field2 from table1

四、关联更新

UPDATE Table1 SET T1F1 = T2F1, T1F2 = T2F2, T1F3 = T2F3 FROM Table1, Table2 WHERE Table1.Key = Table2.Key

原文地址:https://www.cnblogs.com/Fooo/p/9226302.html

时间: 2024-11-05 21:36:05

SQL SERVER 月、季、年统计与常用查询语句汇总的相关文章

SQL Server调优系列进阶篇(查询语句运行几个指标值监测)

原文:SQL Server调优系列进阶篇(查询语句运行几个指标值监测) 前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 利器一

MySQL常用查询语句汇总(不定时更新.......)

在这篇文章中我会通过一些例子来介绍日常编程中常用的SQL语句 目录: ## 1.数据库的建立 ## 2.常用查询 ## 1.数据库的建立 实例将ER图的形式给出: 由此转换的4个关系模式:                    注:下划线为直线为主键,下划线为红色虚线为外键 由此可以建立如下数据库: C: S: SC: T: 数据库的具体建立脚本请查看  我的github ## 2.常用查询 查询年龄最小的四个人(按年龄从小到大排序,如果年龄相同,按姓名顺序排序) SELECT * FROM s

SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变

前提  本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段的统计信息做数据行数预估的算法原理,以及SQL Server 2012和SQL Server 2014该算法的差异情况, 这里暂时不涉及复合统计信息,暂不涉及统计信息的更新策略及优化相关话题,以及其他SQL Server版本计算方式. 统计信息是什么 简单说就是对某些字段的数据分布的一种描述,让SQ

SQL Server 编程入门经典(3)之T-SQL基本语句

本章内容简介: 如何从数据库检索数据(SELECT) 如何向表中插入数据(INSERT) 如何适当更新数据(UPDATE) 如何删除表中数据(DELETE) 3.1 基本SELECT语句  如果你在此之前没有使用过SQL语言,或者还未真正理解它,那么注意学习本章的内容SELECT语句极其语法结构是SQL Server执行全部命令的基础.SELECT 语句的语法规则如下: SELECT [ALL|DISTINCT]  [TOP (<expression>) [PERCENT] [WITH TIE

【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

一.From阶段 针对连接说明: 1.笛卡尔积 2.on筛选器 插播:unknown=not unknuwn 缺失的值: 筛选器(on where having)把unknown当做FALSE处理,排除在筛选结果之外.如果比较两个null,结果是不相等的,false check约束中当做true,例如要求某列大于0,当插入null时是成功的,认为null>0是ture.如果比较两个null,结果是相等的,这种比较在unique约束.集合运算(例如union .except).排序.分组,都认为是

23个MySQL常用查询语句

一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu  WHERE sname  =  '小刘' SELECT * FROM tb_stu  WHERE sname like '刘%' SELECT * FROM tb_stu  WHERE sname like '%程序员' SELECT * F

sql server发生的等待统计信息

SELECT * FROM sys.dm_os_wait_stats WHERE wait_time_ms>0 ORDER BY wait_time_ms DESC 只有sql server重启的时候才会自动清除等待统计信息,可以通过 DBCC SQLPERF("sys.dm_os_wait_stats", CLEAR)命令清除统计信息. 通过一个临时表和waitfor delay 语句跟踪一段时间内发生的变化,从而判断当前正在发生的等待. IF OBJECT_ID('tempd

SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)

本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. 今天来写一下统计信息对于复合索引在预估时候的计算方法和潜在问题. 本文原形来自于是个实际业务问题,某SQL在利用一个符合索引做查询的时候,发现始终会出现预估误差较大的情况, 而改变复合索引的列顺序,这个预估行数的误差会发生变化, 也就是说,Create  index idx_index1 ON T

SQL Server遍历所有表统计行数

DECLARE CountTableRecords CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys.tables sst WHERE sst.TYPE = 'U' DECLARE @name VARCHAR(80), @schema VARCHAR(40) OPEN CountTableRecords FETCH NEXT FROM CountTableRecords INTO @name, @s