sql区间
‘壹’ sql查询不同区间的数量
select
count(case when time>=1 and time <=2 then muid end),
count(case when time>=2.1 and time <=3 then muid end),
count(case when time>=3.1 and time <=4 then muid end)
from table
‘贰’ sql按区间分组汇总,SQL高手指教啊!
select a.a1,a.a2,
sum(case when c.b1='01' then c.b4 end) 一月份,
sum(case when c.b1='01' then c.b4 end) 二月份,
sum(case when c.b1='01' then c.b4 end) 三月份,
sum(case when c.b1='01' then c.b4 end) 四月份,
sum(case when c.b1='01' then c.b4 end) 五月份,
sum(case when c.b1='01' then c.b4 end) 六月份,
sum(case when c.b1='01' then c.b4 end) 七月份,
sum(case when c.b1='01' then c.b4 end) 八月份,
sum(case when c.b1='01' then c.b4 end) 九月份,
sum(case when c.b1='01' then c.b4 end) 十月份,
sum(case when c.b1='01' then c.b4 end) 十一月份,
sum(case when c.b1='01' then c.b4 end) 十二月份 from
a,
(select substring(b1,1,6) as b1,b2,b3,sum(b4) as b4 from b group by substring(b1,1,6),b2,b3) as c
where a.a1=b.b2
group by a.a1,a.a2
oracle的话把substring改成substr就行
‘叁’ 怎么用SQL语句查询时间区间
时间区间:开始时间 和 结束时间
where 时间>=开始时间 and 时间<=结束时间
‘肆’ SQL中查询日期区间内的数据
select * from 借阅信息表 where 编号 between #2006-6-9# and #2008-9-9#
或者
select * from 借阅信息表 where 编号 between "2006-6-9" and "2008-9-9"
‘伍’ SQL语句选取某个区间的记录怎么编写
例如:写一个SQL语句,取出表S中第21~30记录(SQL server,以自动增长的ID作为主键,ID可能不连续)
方法一:
Select TOp10 * from S
Where ID>(Select MAX(ID) from (Select Top20 ID from S ) as S)
方法二:
select Top10 * from S where ID NOT IN(select Top20 ID from S)
(5)sql区间扩展阅读
SQL SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例:
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
‘陆’ SQL语句怎样查询一个范围
SQL方法完成数值区间查询
要求:根据奖金等级表的数值区间,返回奖金对应的等级。
1、链接外部数据:数据--现有链接--浏览更多,在路径中选择数据Excel文件和目标工作表,建立数据链接。
详细步骤参考前面所发的SQL相关文章。
2、编写sql语句。
2.1、使用switch函数,SQL语句为:
select 姓名,奖金,switch(奖金<200,"D级",奖金<300,"C级",奖金<500,"B级",奖金>=500,"A级") as 奖金等级 from [奖金$a1:b11]
switch函数直接判断数值,若数值小于200,返回D级;数值小于300返回C级;数值小于500,返回B级;余下的数值条件要变化为>=500返回A级而不是<=700。
2.2、使用iif函数,SQL语句为:
select 姓名,奖金,iif(奖金<200,"D级",iif(奖金<300,"C级",iif(奖金<500,"B级","A级"))) as 奖金等级 from [奖金$a1:b11]
其基本思路和switch函数相同,类似工作表函数if的嵌套。
2.3、使用betweent...and,SQ语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 between b.最小值 and b.最大值
以戴苏明同学为例子,在SQL代码运行的时候,将戴苏明同学的奖金一一和奖金等级表中的数值进行对比,符合区间的就返回区间等级。其他同学亦然。
但是,当奖金超出最大值700的时候就会取不到该条数据。
如刘平的奖金701并不在betweent...and的区间内,返回的结果中没有刘平的数据。
2.4、使用Where比较大小,sql语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 >=b.最小值 and a.奖金<=b.最大值
此方法原理和betweent...and一样,当奖金超过最大值700时,数据将有遗漏(刘平)。
当奖金的最大值为700的时候,以上四种方法都得出同样的结果。
当奖金最大值超过700的时候,3、4两个方法将遗漏奖金大于700的数据。
因此,可在设计奖金等级表的时候,可以将最大值700改为一个比较大的数值,使奖金再高也不会超过,则四种方位皆可。
如更改奖金等级表的最大值700为70000,这么大的一个范围,则四种方法都适用。
‘柒’ sql怎么取区间
如果是oracle的话,可以用for in语句
for v_num in 1..10 loop
--execute some sql
end loop;
‘捌’ 怎样sql统计数据区间分布
select
count(case when time>=1 and time <=2 then muid end),
count(case when time>=2.1 and time <=3 then muid end),
count(case when time>=3.1 and time <=4 then muid end)
from table
‘玖’ SQL 如何查询一个区间段的所有值
建议先根据查询条件查出对应的区间,然后对这个区间做处理。
处理可以在SQL里面,也可以在应用程序里面。
没特殊要求的话建议采用后者,直接在程序里面写一个循环即可。
如果是要用SQL的话,可以用一个临时表把需要的先放里面再取出即可.
‘拾’ SQL日期区间查询
--你想要的是不是这样?
--适用于SQL Server
declare @date1 datetime, @date2 datetime
set @date1 = '20140101'
set @date2 = '20140131'
select @date1 date1, @date2 date2,
sum(case when 预付日期 >=@date1 and 预付日期<=@date2 then 预付金额 else 0 end) 预付金额,
sum(case when 实付日期 >=@date1 and 实付日期<=@date2 then 实付金额 else 0 end) 实付金额,
sum(case when 入库日期 >=@date1 and 入库日期<=@date2 then 入库数量 else 0 end) 入库数量,
sum(case when 发票日期 >=@date1 and 发票日期<=@date2 then 发票金额 else 0 end) 发票金额
from table1