当前位置:编程学习 > C#/ASP.NET >>

sql语句怎么写?

我的数据库是ACCESS 2003

原表 A:

 

 原表 B:



 



SQL语句怎么写 才能得到下面的结果???

结果 :

 

这里的墩号 是 根据 墩号的里程 和节段的里程 来确定的

里程 值 就相当与 坐标系中的x值, 代表位置

每个墩号都有一个 x值 (里程),要查出 每两个墩号之间有哪些 节段

这里节段 有2个点,也就有2个x值(里程),就是上图说的 节点里程小,节点里程大

相当与一条线段,有两个点,所以有两个X值,

而 墩号 就相当 一个点了。

 

这样说 可能问题还是没有说清楚,有兴趣的朋友 可以加我qq 305234089

 

--------------------编程问答-------------------- 楼主都发了几个帖子还没有答案?
去sql版发帖吧 --------------------编程问答-------------------- http://download.csdn.net/detail/xianfajushi/3848381下载学习去 --------------------编程问答-------------------- 根据里程填充 --------------------编程问答-------------------- 这个贴子也结了吧 前面的贴子给你答案了 --------------------编程问答-------------------- SELECT B.id,B.segmenName, Mileage=( CASE when B.mileage IS NULL THEN (select top 1 A.mileage from A 
where A.id<B.id 
order by A.id desc) ELSE B.mileage END )
FROM B


楼主好像问过这个问题,你不是说解决了吗?我对Access不太了解,只对sql熟,你不说Access中上面的语句

换成if就行了吗?
--------------------编程问答-------------------- 还没结?话说那里可以不用 isnull() case when 的 --------------------编程问答--------------------
引用 5 楼  的回复:
SELECT B.id,B.segmenName, Mileage=( CASE when B.mileage IS NULL THEN (select top 1 A.mileage from A 
where A.id<B.id 
order by A.id desc) ELSE B.mileage END )
FROM B


楼主好像问过这个问题,你不是说解决了吗?我对Acce……



可是可以  但是速度太慢了 ,不能根据编号来确定,这样很慢,所以想根据 里程值 来查询 --------------------编程问答--------------------
引用 7 楼  的回复:
引用 5 楼  的回复:
SELECT B.id,B.segmenName, Mileage=( CASE when B.mileage IS NULL THEN (select top 1 A.mileage from A
where A.id<B.id
order by A.id desc) ELSE B.mileage END )
FROM B


楼主好像问过这个问题,你不……


估计这按所谓的里程值来查询也快不到哪儿去 

select B.节段编号,****, A.墩号
from B left join A on A.里程 between B.里程小 and B.里程大 

没有测试 手写而已 --------------------编程问答-------------------- 还是一样的 速度的话不知道是否能快一些
SELECT B.id,B.mileageS, b.mileageB,B.segmenName,
(SELECT TOP 1 A.id FROM A WHERE B.mileageB>A.mileage ORDER BY A.id Desc)=Mileage
FROM B  --------------------编程问答-------------------- 8楼的 报错了 ‘Between 操作符 之间没有And 在查询表达式 ’A.里程 between B.里程‘ 中
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,