access表R, 结构(日期 站点 R2020),字段都为文本,
日期 站点 R2020
20000101 长沙 0001
20000102 长沙 0121
20000103 长沙 0131
20000104 长沙 0351
....
20000101 湘潭 0021
20000102 湘潭 0231
20000103 湘潭 0121
... ... ...
20000101 株洲 0021
20000102 株洲 0231
20000103 株洲 0121
.....
要求出各个站点日期:时间1-时间2 R2020的和,结果如下:
时间1-时间2 站点1sum 站点2sum 站点3sum....
日期 站点 R2020
20000101 长沙 0001
20000102 长沙 0121
20000103 长沙 0131
20000104 长沙 0351
....
20000101 湘潭 0021
20000102 湘潭 0231
20000103 湘潭 0121
... ... ...
20000101 株洲 0021
20000102 株洲 0231
20000103 株洲 0121
.....
要求出各个站点日期:时间1-时间2 R2020的和,结果如下:
时间1-时间2 站点1sum 站点2sum 站点3sum....
解决方案 »
- 一个简单的问题
- 有人回帖会不会给 LZ加分啊? 如果没有的话太不合理了。分散的太快了。。。。。。。 散一分
- 函数调用问题
- TStringList.Create;问题
- 急急急!!客户端主从表关系的两个clientdataset,如果从表关联的主表记录在clientdataset提交之前被修改或删除了怎么办!
- 怎样处理鼠标拖动事件。
- TMemo的问题
- 求leapFTP2.7.2 的注册码
- 我如何实现Tgauge的拖动呢???
- 谁知道哪一个API函数可以检测有多少台机器和我建立连接(或访问)。。好答案我将尽力加分。。。。
- delphi中的tcxgrid:怎样实现当鼠标点击某行时,改行背景色加深?
- delphi7使用idhttp进行网站post数据出现406错误问题
SQL 区逻辑高手太多了,这种纯逻辑的问题,很伤脑子的嗷呜.
drop table R
GO
create table R
(日期 varchar(50),站点 varchar(50),R2020 varchar(50))
insert into R values('20000101' ,'长沙', '0001')
insert into R values('20000102' ,'长沙', '0121')
insert into R values('20000103' ,'长沙', '0131')
insert into R values('20000104' ,'长沙', '0351')insert into R values('20000101' ,'湘潭', '0021')
insert into R values('20000102' ,'湘潭', '0231')
insert into R values('20000103' ,'湘潭', '0121')insert into R values('20000101' ,'株洲', '0021')
insert into R values('20000102' ,'株洲', '0231')
insert into R values('20000103' ,'株洲', '0121')
-- 如何求得两个任意时段的历年平均值?
-- 如:给定2个日期19800301和20040725,求每年0301到0725之间的和,再除以1980到2004之间的年数,即为历年平均值。--得到的数据格式:
--站点 历年平均值
--长沙 ----
--湘潭 ----
--株洲 ----
--select * from R
declare @riqi1 varchar(50)
declare @riqi2 varchar(50)
declare @riqi3 int
declare @riqi4 int
set @riqi1='19800301' -------- 输入的日期
--set @riqi2='19800303'
set @riqi2='20040725' -------- 输入的日期
set @riqi4=-1
set @riqi3=cast(SUBSTRING(@riqi1,5,4)as int)
while @riqi3<=CAST( SUBSTRING(@riqi2,5,4) as int)
begin
set @riqi4= @riqi4+1
set @riqi3=@riqi3+1
endselect @riqi4/nullif(CAST( SUBSTRING(@riqi2,1,4) as int)-CAST( SUBSTRING(@riqi1,1,4) as int),0) as 历年平均值
历年平均值
-----------
17(1 行受影响)
如查找日期为20000302到20100623,则"站点""R2020"的历年平均值应该为:
2000年03月02日到2000年06月23日"R2020"的和(S1)
2001年03月02日到2001年06月23日"R2020"的和(S2)
2002年03月02日到2002年06月23日"R2020"的和(S2)
.........
2010年03月02日到2010年06月23日的和(Sn)
历年平均值: SUM=(S1+S2+...Sn)/(2010-2000+1)
问题1如上可以解决,我已解决。但现求4楼及10楼问题的解决方案,请大家帮思考下。再次谢谢了!
select 站点, SUM(CAST(R2020 AS INT)) AS 合计 from R where SUBSTRING(日期,5,4)>='0301' and SUBSTRING(日期,5,4)<='0331' and 日期 between '20000301' and '20000331' group by 站点但在access中用下句却不能实现:
SQLstr:='select 站点, SUM(VAL(R2020))*0.1 AS 合计 from R'
+' where left(日期,4)>="0301" AND left(日期,4)<="0331"'
+' and 日期 between '+QuotedStr(startdate)+' AND '+QuotedStr(enddate)
+' group by 站点';错在哪?
sql语句能执行,数据不对的话,是access要把datetime后面的时间部分也要考虑进去,比如:#2012-12-12 00:00:01#