好象直接有个语句不可以吧
用while看看了
用while看看了
解决方案 »
- 遇到一个棘手的查询问题.....求帮助....急
- 请问group by后面的字段能不能区分大小写?
- 请教这样一个语句怎么写
- 急求sql语句
- 【50分求解一条简单SQL语句】都加给第一个解决问题的大侠
- 我都快崩溃了,请大家帮忙,谢
- 在使用sql查询分析器时,连接服务器时出现:用户sa登录失败。原因:未与信任sql server连接相关联。这是怎么回事啊??
- 能不能通过脚本代码生成一个作业?
- 新建触发器后引起的问题,急!
- 来者有分,答对另送100分!!比珍珠还真
- ***< 超难问题,希望 高手给答复 >*** 如何用 SQL存储过程 查询给定的ID的类别 以及它的所有父辛类的名字和id !!!!
- 如何把这两条语句写成一条?
先找到@min = min(date) from table where date = '2005-01-01'
@max = max(date) from talbe where date = '2005-01-08'
while @min <= @max
begin
--在这写代码
set @min = @min + 3
end
这样就可以了。
select identity(int,1,1) id,datepart(dd,date) datep,sum(number) counts
into aaaa
from book
where [date] between '1/1/2005' and '1/8/2005'
group by datepart(dd,date)2。创建一个新表
create table bbb
(sum int)
3。每3天生成一个sum(总和)
declare @a int
set @a=0
while @a<=(select count(1) from aaaa)
begin
insert bbb
select sum(counts)
from aaaa
where id<=@a+3 and id>=@a
set @a=@a+3
end4。查询该表
select * from bbb
如果在所给固定时间范围内的id是连续的话,比如2005-01-01至2005-01-08之间的id是1-8,这样就可以先在子查询里取(id-1)/3的整数部分和number值,这样id就成了0 0 0 1 1 1 2 2,然后在子查询外对id分组求出sum(number)就行了
如果日期是连续的话,也可以先取出date字段跟系统日期之间的相差天数,这些相差的天数也是连续的,再根据上面的方法也可以的
如果日期和id都不连续的话,还没想到好办法,如果sql server 里有oracle里的rownum伪列的话就都好办了
start_date = min(date),
end_date = max(date),
count_all = count(*),
sum_number = sum(number)
from #t -- your table
group by datediff(d,'20050101',date)/3