实在写不出了,来求一条SQL查询语句。谢谢!

Sammo 2010-11-10 08:11:30
ID MyValue Date
-----------------------------
001 9.4 2010-01-01
001 9.6 2010-01-02
001 9.3 2010-01-03
001 9.7 2010-01-04
001 10.0 2010-01-05
002 10.4 2010-01-01
002 10.6 2010-01-02
002 10.3 2010-01-03
002 10.7 2010-01-04
002 10.5 2010-01-05


我想要用SQL语句(最好是ACCESS的,或者SQLSERVER也行)查询ID是001的两日平均值,要得出结果(四舍五入两位小数点):
ID MyMa Date
--------------------------------
001 0 2010-01-01
001 9.5 2010-01-02
001 9.45 2010-01-03
001 9.5 2010-01-04
001 9.85 2010-01-05
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sammo 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
引用我要是想求3天的,5天的,或10天的怎么办呀?
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的……
[/Quote]

你好,我使用的是ACCESS数据库,我已经写出来,但我的这种写法,数据量大了就很慢,有没有解决方案呢?

SELECT d.BH, d.NAME, d.MyValue,
(SELECT IIF(COUNT(*)=5, Round(AVG(p.MyValue),1), 0)
FROM AA as p
WHERE d.BH = p.BH
AND p.MyDate IN
(SELECT TOP 5 pp.MyDate
FROM AA AS pp
WHERE d.MyDate >= pp.MyDate
AND d.BH = pp.BH
ORDER BY pp.MyDate DESC )) as five_days_average,
(SELECT IIF(COUNT(*)=10, Round(AVG(p.MyValue),1), 0)
FROM AA as p
WHERE d.BH = p.BH
AND p.MyDate IN
(SELECT TOP 10 pp.MyDate
FROM AA AS pp
WHERE d.MyDate >= pp.MyDate
AND d.BH = pp.BH
ORDER BY pp.MyDate DESC )) as ten_days_average,
d.MyDate
FROM AA as d
ORDER BY d.BH, d.MyDate;
ACMAIN_CHM 2010-11-10
  • 打赏
  • 举报
回复
[Quote]我要是想求3天的,5天的,或10天的怎么办呀?[/Quote]
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

Sammo 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
SQL code
select a.id,iif(b.MyValue is null,0,(a.MyValue+b.MyValue)/2) As MyMa,a.Date
from table1 a left join table1 b on a.id=b.id and a.Date=b.Date+1
where a.id='001'
[/Quote]

谢谢朋友,按您的这个语句,我要是想求3天的,5天的,或10天的怎么办呀?我试来试过不知道怎么改,呵呵!
ACMAIN_CHM 2010-11-10
  • 打赏
  • 举报
回复
select a.id,iif(b.MyValue is null,0,(a.MyValue+b.MyValue)/2) As MyMa,a.Date
from table1 a left join table1 b on a.id=b.id and a.Date=b.Date+1
where a.id='001'

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧