‘壹’ sql 分数字段分段统计
//尝试下面的sql--目测可以的
selectuid,score,t2.flagfrom[dbo].[table1]ast1
leftjoin[dbo].[table2]ast2
ont1.score>=t2.range_maxandt1.score<=t2.range_min
‘贰’ SQL查询,将某数据分段
分隔符‘-’的前后字符串字数是不是固定的,如果是固定的使用一楼的答案就行了,如果不是固定的可以写一个分隔函数,在查询的时候调用,
--按指定符号分割字符串,返回分割后指定索引的第几个元素
CREATEfunctionGet_StrArrayStrOfIndex
(
@strnvarchar(4000),--要分割的字符串
@splitvarchar(10),--分隔符号
@indexint--取第几个元素
)
returnsnvarchar(2048)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedintset@str=ltrim(rtrim(@str))
set@start=1
set@next=1
set@seed=len(@split)set@location=charindex(@split,@str)
while@location<>0and@index>@next
begin
set@start=@location+@seed
set@location=charindex(@split,@str,@start)
set@next=@next+1
end
if@location=0select@location=len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。returnsubstring(@str,@start,@location-@start)
end
--查询语句
selectdbo.Get_StrArrayStrOfIndex(A,'-',1)asA1,dbo.Get_StrArrayStrOfIndex(A,'-',2)asA2,dbo.Get_StrArrayStrOfIndex(A,'-',3)asA3,Bfromtablename
‘叁’ sql 分段查询语句怎么写
什么库? sqlserver access oracle?
access的话 还是在表里多设置一个字段让他自动增减吧!~
sqlserver的话
select identity(int,1,1) rownum,name into #temp from 表
select * from #temp where rownum>10 and rownum<=20
oracle最简单 有rownum可以直接用!~
‘肆’ SQL 查询不连续的号码,按号码段分段显示,并统计分段数量。
declare@AAtable(yearsint,numberint)
insertinto@AAvalues(2014,45201521)
insertinto@AAvalues(2014,45201522)
insertinto@AAvalues(2014,45201523)
insertinto@AAvalues(2014,45201524)
insertinto@AAvalues(2014,45201525)
insertinto@AAvalues(2014,45201526)
insertinto@AAvalues(2014,45201527)
insertinto@AAvalues(2014,45201528)
insertinto@AAvalues(2014,45201532)
insertinto@AAvalues(2014,45201535)
insertinto@AAvalues(2014,45201536)
insertinto@AAvalues(2013,45070121)
insertinto@AAvalues(2013,45070122)
insertinto@AAvalues(2011,45010022)
insertinto@AAvalues(2011,45010023)
insertinto@AAvalues(2012,48038811)
insertinto@AAvalues(2012,48038815)
select年份,casewhenstart_num!=end_numthenconvert(varchar(20),start_num)+'-'+convert(varchar(20),end_num)elseconvert(varchar(20),start_num)endas票段号,份数from(
selectyears年份,min(number)asstart_num,max(number)asend_num,COUNT(years)as份数
from
(selectyears,number,number-ROW_NUMBER()over(orderbynumber)asgrp
from@AA)m
groupbygrp,years)t
orderby年份,票段号asc
‘伍’ sql 分时间段显示数据
select * from Fine where DatePart(hh,datef) BETWEEN 0 AND 3
只要将 0 与 3 (BETWEEN 0 AND 3 这是0点到上午3点)改成你想要的时间的小时部分就可以了
如果想要分钟部分可将 hh 改成 ss 就可了(其他的相同)
sql中可以有date类型的????????是datetime的吧!你想按小时分,在数据里没有时间部分怎么分,datetime类型的在插入数据时会自动跟上时间.
‘陆’ SQl语句查出来的字符串怎么分段
select
decode(f1,'1','1,你好','1,2','1、你好;2、我很好;'
from al;
试试DECODE函数