-
mssql中获取指定日期所在月份的第一天的代码
获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可。复制代码代码如下:CREATEFUNCTION[dbo].[udf_FirstDayOfMonth](@DateDATE)RETURNSDATETIMEASBEGINRETURNCAST(DATEADD(day,1-DAY(@Date),@Date)ASDATETIME)END或者,用DATEDIFF计算指定日期与日期开始之时,相隔几个月,然后再DATEADD加上这个相隔月份数,从零开始...
数据库操作教程 2022-09-23 20:29:08 -
SQLServer RANK() 排名函数的使用
本文主要介绍了SQLServerRANK()排名函数的使用,具体如下:--例子表数据SELECT*FROMtest;--统计分数SELECTname,SUM(achievement)achievementFROMtestGROUPBYname;--按统计分数做排行SELECTRANK()OVER(ORDERBYSUM(achievement)desc)排行,name,SUM(achievement)achievementFROMtestGROUPBYname;求助问答存储过程使用:USE[DB]GO/******Object:StoredProcedure[dbo].[sp_TodayJoinUser]ScriptDate:2021/1/2614:45:24******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================--Author:_Hey_Jude--Createdate:2021-01-26--Description:获取今日发表帮助/回复的新用户--...
数据库操作教程 2022-09-23 18:24:07 -
SQL查询排名函数实例
在实际开发中经常会遇到计算某个字段的排名的情况如下表:totak_sales现在又如此要求:按sales的逆序排序,要求添加一个sales_rank字段,显示排名顺序方法:复制代码代码如下:SELECTa1.Name,a1.Sales,COUNT(a2.sales)Sales_RankFROMTotal_Salesa1,Total_Salesa2WHEREa1.Sales<=a2.Salesor(a1.Sales=a2.Salesanda1.Name=a2.Name)GROUPBYa1.Name,a1.SalesORDERBYa1.SalesDESC,a1.NameDESC;结果:或:复制代码代码如下:SELECTa1.Name,a1.Sales,COUNT(a2.sales)Sales_RankFROMTotal_Salesa1,Total_Salesa2WHEREa1.Sales<a2.Salesor(a1.Sales=a2.Salesanda1.Name=a2.Name)GROUPBYa1.Name,a1.SalesORDERBYa1.SalesDESC,a1.Nam...
数据库操作教程 2022-09-23 18:02:59 -
sqlserver清除完全重复的数据只保留重复数据中的第一条
--创建测试表CREATETABLE[dbo].[testtab]([id][nchar](10)NULL,[name][nchar](10)NULL);--向测试表插入测试数据insertintotesttabvalues('1','1');insertintotesttabvalues('1','1');insertintotesttabvalues('2','2');insertintotesttabvalues('2','2');insertintotesttabvalues('3','3');insertintotesttabvalues('3','3');--创建临时表并向临时表中插入测试表testtab中数据以及添加自增id:autoIDselectidentity(int,1,1)asautoID,*into#Tmpfromtesttab--根据autoID删除临时表#tmp中的重复数据,只保留每组重复数据中的第一条delete#TmpwhereautoIDin(selectmax(autoID)from#Tmpgroupbyid);--清除testtab表中的所有数据...
数据库操作教程 2022-09-23 17:56:30 -
mssqlserver中实现的unix时间戳函数(含生成和格式化,可以和mysql兼容)
直接上代码:CREATEFUNCTIONUNIX_TIMESTAMP(@ctimestampdatetime)RETURNSintegerASBEGIN/*Functionbody*/declare@returnintegerSELECT@return=DATEDIFF(SECOND,{d'1970-01-01'},@ctimestamp)return@returnENDCREATEFUNCTIONfrom_unixtime(@tsinteger)RETURNSdatetimeASBEGIN/*Functionbody*/declare@returndatetimeselect@return=DATEADD(second,@ts,{d'1970-01-01'})return@returnEND用法跟MySQL下的一样类似:selectdbo.UNIX_TIMESTAMP('2013-1-1')selectdbo...
数据库操作教程 2022-09-23 17:47:59 -
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)
Sqlserver获取每组中的第一条记录在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据...
数据库操作教程 2022-09-23 17:46:16 -
某年第一周开始日期实现方法
参考网址https://www.jb51.net/article/29551.htm复制代码代码如下:SELECT[StartDate]FROM[dbo].[udf_Week](2012,2012)WHERE[Week]=1上面SQL语句执行结果:但你还是觉得此方法很复杂,而且只需要日期部分,时间部分无需显示。因此Insus.NET更改并产生如下一个新函数,你把函数附加入你的数据库中,即可在程序中应用它了...
数据库操作教程 2022-09-23 17:43:36 -
实例讲解sqlserver排名函数DENSE_RANK的用法
一、需求 之前sqlserver的排名函数用得最多的应该是RoW_NUMBER()了,我通常用ROW_NUMBER()+CTE来实现分页;今天逛园,看到另一个内置排名函数还不错,自己顺便想了一个需求,大家可以花1分钟先想想要怎么实现。 需求很简单:求成绩排名前五的学生信息...
数据库操作教程 2022-09-23 17:42:16 -
巧妙利用PARTITION分组排名递增特性解决合并连续相同数据行
问题提出先造一些测试数据以说明题目:DECLARE@TestDataTABLE(IDINT,Col1VARCHAR(20),Col2VARCHAR(20))INSERTINTO@TestData(ID,Col1,Col2)SELECT1,'New','Approved'UNIONALLSELECT2,'Approved','Commited'UNIONALLSELECT3,'Commited','InProgress'UNIONALLSELECT4,'New','Approved'UNIONALLSELECT5,'New','Approved'UNIONALLSELECT6,'New','Approved'UNIONALLSELECT7,'Approved','Removed'SELECT*FROM@TestData数据说明,ID列连续自增...
数据库操作教程 2022-09-23 17:40:18 -
SQL语句分组获取记录的第一条数据的方法
使用Northwind数据库首先查询Employees表查询结果:city列里面只有5个城市使用ROW_NUMBER()OVER(PARTITIONBYCOL1ORDERBYCOL2)先进行分组注:根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).sql语句为:selectEmployeeID,LastName,FirstName,Title,TitleOfCourtesy,City,ROW_NUMBER()over(partitionbyCityorderbyEmployeeID)asnew_index fromEmployees执行结果图:可以看到是按照City分组,EmployeeID排序。select出分组中的第一条记录执行语句:select*from(selectEmployeeID,LastName,FirstName,Title,TitleOfCourtesy,City,ROW_NUMBER()over(partitionbyCityorderbyEmployeeID)asnew_index&nbs...
数据库操作教程 2022-09-23 17:15:37 -
Sql学习第一天——SQL将变量定义为Table类型(虚拟表)
SQL将变量定义为Table类型在平时定义sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar,int........,那如何让变量作为一个像虚拟表一样呢,其实很简单。基本语法:复制代码代码如下: declare@ttable(列名1列的数据类型1,列名2列的数据类型2,...............) insertinto@t(列名1,列名2,...............)values(...............)[code]或者[code] insertinto@t(列名1,列名2,...............)(select....from....)实验用表一(PeopleInfo): id name phone XC1 李某 123333333 XC2 小小 785555555例如: 复制代码代码如下: declare@ttable(idnvarchar(3),[name]nvarchar(10))insertinto@t(id,[name])(selectid,[name]fromPeopleInfowher...
数据库操作教程 2022-09-23 17:10:36 -
Sql学习第一天——SQLUNION和UNIONALL操作符认识
关于SQLUNION操作符UNION操作符用于合并两个或多个SELECT语句的结果集。注意:1.UNION内部的SELECT语句必须拥有相同数量的列...
数据库操作教程 2022-09-23 17:06:38