-
一个常用的报表统计SQL语句
一般都给定按日期区间统计某一值,每一个列就是统计时的分类。如下图:下面给出上图的例子的sql语句写法:(注:此处是按“日期”字段统计)复制代码代码如下:select日期,自选字段1,自选字段2,sum(类型1)类型1,sum(类型2)类型2,sum(类型3)类型3,sum(类型4)类型4,sum(类型5)类型5,sum(类型6)类型6from(selectto_date(to_char(日期,'yyyy-MM-dd'),'yyyy-mm-dd')日期,自选字段1,自选字段2,count(主键字段)类型1,0类型2,0类型3,0类型4,0类型5,0类型6from表名where1=1groupbyto_date(to_char(日期,'yyyy-MM-dd'),'yyyy-mm-dd'),自选字段1,自选字段2unionallselectto_date(to_char(日期,'yyyy-MM-dd'),'yyyy-mm-dd')日期,自选字段1,自选字段2,0类型1,count(主键字段)类型2,0类型3,0类型4,0类型5,0类型6from表名where1=1groupbyto_date...
数据库操作教程 2022-09-23 20:23:47 -
一个分页存储过程代码
复制代码代码如下:--------------------------------------用途:分页存储过程(对有主键的表效率极高)--说明:------------------------------------ALTERPROCEDURE[UP_GetRecordByPage]@tblNamevarchar(255),--表名@fldNamevarchar(255)...
数据库操作教程 2022-09-23 20:23:43 -
sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
版本一:按分隔符进行比较算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较复制代码代码如下:USE[Fly]GO--参数:@inStr待搜索字串,@fndStr搜索字串,@doc分隔符--例:selectdbo.fSearch('1,2,3,4,5,6','3,6,5,8,2',',')返回0-不匹配,返回1-匹配(@instr中有@fndStr内容)--可以用于表搜索,如:--Select*,dbo...
数据库操作教程 2022-09-23 20:21:32 -
一个用来统计相同姓名人数的SQl语句
sql语句查询表结构是这样:ID姓名性别1张三男2王四男3丽丽女4张三男5赵柳男6高洁男7王四女8高洁女9张三女怎么能用一条SQL语句查询出如下的结果姓名人员个数男人数女人数包含ID张三3211,4,9王四2112,7丽丽1013高洁2116,8赵柳1105复制代码代码如下:SELECT*FROM(SELECTDISTINCTName,Count(ID)as人員個數,sum(casewhenSex='男'then1else0end)as男人數,sum(casewhenSex='女'then1else0end)as女人數FROMTestgroupbyName)AOUTERAPPLY(SELECT[包含ID]=STUFF(REPLACE(REPLACE((SELECTIDFROMTestNWHEREName=A.NameFORXMLAUTO),'<NID="',','),'"/>',''),1,1,''))N...
数据库操作教程 2022-09-23 20:21:23 -
将所有符合条件的结果拼接成一列并用逗号隔开的一个sql语句
复制代码代码如下:createtabletb(idint,valuevarchar(10))insertintotbvalues(1,'aa')insertintotbvalues(1,'bb')insertintotbvalues(2,'aaa')insertintotbvalues(2,'bbb')insertintotbvalues(2,'ccc')gocreatefunction[dbo].[f_str](@idint)returnsnvarchar(1000)asbegindeclare@strnvarchar(1000)set@str=''select@str=@str+','+cast(valueasnvarchar(900))fromtbwhereid=@idset@str=right(@str,len(@str)-1)return@strendgo--调用函数selectid,value=dbo.f_str(id)fromtbgroupbyid运行结果:本来在上面的函数中所有的nvarchar都是varchar类型的,并且上面函数的红色处在调用cast方法时,并未指定...
数据库操作教程 2022-09-23 20:21:15 -
分享一个简单的sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句...
数据库操作教程 2022-09-23 18:19:45 -
CASE表达式实现基于条件逻辑来返回一个值
我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了。例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述categoryid列取值的信息...
数据库操作教程 2022-09-23 17:54:51 -
Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理==================DECLARE@A1VARCHAR(10),@A2VARCHAR(10),@A3INTDECLARECURSORYOUCURNAMEFORSELECTA1,A2,A3FROMYOUTABLENAMEOPENYOUCURNAMEfetchnextfromyoucurnameinto@a1,@a2,@a3while@@fetch_status<>-1beginupdate…set…-a3where………您要执行的操作写在这里fetchnextfromyoucurnameinto@a1,@a2,@a3endcloseyoucurnamedeallocateyoucurname—————————————在应用程序开发的时候,我们经常可能会遇到下面的应用,我们会通过查询数据表的记录集,循环每一条记录,通过每一条的记录集对另一张表进行数据进行操作,如插入与更新,我们现在假设有一个这样的业务:老师为所在班级的学生选课,选的课程如有哲学、马克思主义政治经济学、毛泽东思想...
数据库操作教程 2022-09-23 17:53:26 -
查询Sqlserver数据库死锁的一个存储过程分享
使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁,死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉。利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里.创建sp_who_lock存储过程CREATEproceduresp_who_lockasbegindeclare@spidintdeclare@blkintdeclare@countintdeclare@indexintdeclare@locktinyintset@lock=0createtable#temp_who_lock(idintidentity(1,1),spidint,blkint)if@@error<>0return@@errorinsertinto#temp_who_lock(spid,blk)select0,blockedfrom(select*frommaster..sysprocesseswhereblocked>0)awherenotexists(select*frommas...
数据库操作教程 2022-09-23 17:47:30 -
一个统计表每天的新增行数及新增存储空间的功能
使用文中提供的代码做一个统计表每天的新增行数及新增存储空间的功能实现步骤如下:1.创建表创建表,存储每天的表空间占用情况CREATETABLE[dbo]...
数据库操作教程 2022-09-23 17:45:50 -
Transactionalreplication(事务复制)详解之如何跳过一个事务
在transactionalreplication,经常会遇到数据同步延迟的情况。有时候这些延迟是由于在publication中执行了一个更新,例如updatetasetcol=?Where?,这个更新包含巨大的数据量...
数据库操作教程 2022-09-23 17:38:49