SQL查询

gzzwind 2012-05-18 12:42:20
原数据表:
字段1 字段2
1
2
3 A
4 B
5 C
6
7 D
8 E
要求的结询显示结果:
字段1 字段2 字段3
1 1
2 2
3 A 2
4 B 2
5 C 2
6 6
7 D 6
8 E 6


字段3是这样求值的:当前记录的字段2的值为null,则 当前记录的字段3=当前记录的字段1
当前记录的字段2的值不为null,则 当前记录的字段3=当前记录的前一个记录的字段3的值

问:这样的SQL语句应怎样写?
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzzwind 2012-05-20
  • 打赏
  • 举报
回复
6楼跟4楼,意思是一样的,我根据自己的表的实际情况修改SQL语句后执行过,觉得6楼的执行起来相对要快!
3楼,看起来比较复杂,不能一下子明白语句的意思!没有实际试过,不过应该是可以的!

谢谢以上3位朋友!谢谢所有回贴的朋友!
qq291325231 2012-05-19
  • 打赏
  • 举报
回复
代码不错,受教了
ACMAIN_CHM 2012-05-18
  • 打赏
  • 举报
回复
select 字段1   ,字段2, (select max(字段1) from 原数据表 where 字段2 is null and 字段1<=a.字段1) as 字段3
from 原数据表 a
proer9988 2012-05-18
  • 打赏
  • 举报
回复
3、4楼的代码不错,学习了。
WWWWA 2012-05-18
  • 打赏
  • 举报
回复




SELECT * ,dmax('字段1','ttp','字段1<=' & a.字段1 & 'and 字段2 is null')
FROM ttp a
想飞的菜鸟 2012-05-18
  • 打赏
  • 举报
回复
假设你的原始表名称为tt,可以使用以下语句:
SELECT A.字段1,A.字段2,MAX(B.字段1) AS 字段3 FROM TT AS A,
(SELECT 字段1 FROM tt where 字段2 IS NULL)B
WHERE A.字段1>=B.字段1
GROUP BY A.字段1,A.字段2

刚刚明明回复了,刷新却没有出现回复内容。
想飞的菜鸟 2012-05-18
  • 打赏
  • 举报
回复
假设你的原始表名称是tt,可以使用以下语句。
SELECT A.字段1,A.字段2,MAX(B.字段1) AS 字段3 FROM TT AS A,
(SELECT 字段1 FROM tt where 字段2 IS NULL)B
WHERE A.字段1>=B.字段1
GROUP BY A.字段1,A.字段2
proer9988 2012-05-18
  • 打赏
  • 举报
回复
这个得编程实现

7,714

社区成员

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

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