新年好,数据区间查询问题 在线等
在对一个视图进行处理时,发现了难题
比如表如下
工厂 数量 交易时间
A 50 2004-05-07 12:55:00
A 40 2004-05-08 12:55:00
B 30 2004-05-10 12:55:00
B 60 2004-05-11 12:55:00
B 30 2004-05-12 12:55:00
现需以交易时间设置区间(比如2天),GROUP BY 工厂,Sum(数量)的话,
得到如下
工厂 数量 交易时间
A 90 2004-05-07
B 90 2004-05-10
B 30 2004-05-12
同理,如果设置为3天,则为
工厂 数量 交易时间
A 90 2004-05-07
B 120 2004-05-10
怎么才能够实现呢?在线等,急啊,明早就要用了.
问题点数:0、回复次数:7Top
1 楼syjeffdyg(阿谷)回复于 2005-01-01 22:53:02 得分 0
select 工厂,sum(数量),交易时间 from database
group by 工厂
having 交易时间 between 交易时间 and 交易时间+1Top
2 楼syjeffdyg(阿谷)回复于 2005-01-01 22:56:31 得分 0
不知道对否?请指正,当然,也可以这样试验一下:
select 工厂 x,sum(数量),交易时间 from database
group by 工厂
having 交易时间+1 in select 交易时间 where 工厂=x.工厂
欢迎大家讨论Top
3 楼zengzhengliang(啊牛)回复于 2005-01-02 21:28:51 得分 0
select 工厂,sum(数量) 数量
from a group by 工厂 having count(工厂)<=3Top
4 楼gmhis(Huery)回复于 2005-01-02 22:03:47 得分 0
谢谢阿谷,阿牛,可我要的不是这样的啊
区间是要求可以随意设置的,比如,1天,3天,或者1个月,那我就得把这个区间里面的数量进行汇总,搞不定啊Top
5 楼guid6(学无止境)回复于 2005-01-02 22:46:03 得分 0
能不能直接给定日期汇总
DECLARE @KSRQ NVARCHAR(10),@JSRQ NVARCHAR(10)
select 工厂 x,sum(数量),交易时间 from database WHERE CONVERT(CHAR(10),交易时间,20)>=@KSRQ AND CONVERT(CHAR(10),交易时间,20)<=@JSRQ group by 工厂Top
6 楼ReViSion(和尚)回复于 2005-01-02 23:41:57 得分 0
--我在网吧写的可能有些关键字有误
select identity(int,1),B.* into a From TableName B
order by 工厂,交易日期
Declare @Counts int
Declare @NowDate datetime
Declare @intcounts int
select @counts=count(*) From a
select @intcounts=1
再一条条取,把在同一区间的日期改为最前一个时间
明白给你程序
Top
7 楼ReViSion(和尚)回复于 2005-01-03 18:04:54 得分 0
Declare @company varchar(20)
declare @date datetime
select * into a from TableName
Select @company=min(工厂) from a
while @company is not null
begin
Select @date=min(交易日期) from a where 工厂=@company
while @date is not null
begin
update a set a.交易日期=@date where a.工厂=@company
and a.交易日期<=@date+@days --@days为区间天数
select @date=min(交易日期) from a where 工厂=@company
and 交易日期>@date
end
select @company=min(工厂) from a where 工厂>@company
end
select 工厂,sum(数量),交易日期 from a group by 工厂,交易日期
你试试吧,行的
Top




