SQL问题,会者不难,在线等(200分)

  • 主题发起人 主题发起人 zhaolibo
  • 开始时间 开始时间
Z

zhaolibo

Unregistered / Unconfirmed
GUEST, unregistred user!
一个主表,五个从表,主从表中都有日期字段,用left join连接
以主表的日期为准在从表中找数据,从表中有该日期的数据就找上,没有该日期就找前一日期的,再没有再往上找,以此类推。。。
我用distinct确保从表中的数据只找一个,但不知道如何在从表中找到比要求日期小并且离要求日期最近的,如果用order by,那加在哪里呢?
例:

主表 从表
日期 合约号 订单号 坯布 日期 坯布 价格
200803 a a a 200802 a 2
200803 a a b 200803 a 3
200802 b 2



得到结果:

日期 合约号 订单号 坯布 价格
200803 a a a 3
200803 a a b 2
 
select top 1
where data1 <= data2
 
我有很多从表,这样能解决问题么?是不是简单点了!能否详细一下下
 
你没有讲明白,不知道你要做什么,你的五个从表是什么结构?要实现什么目的?
 
select * from
主表 left join
从表 on 从表.日期 in
(select top 1 日期 from 从表 where 主表.日期 >= 从表.日期 order by 从表 desc )
--select max(日期) from 从表 where 主表.日期 >= 从表.日期 order by 从表 desc )
 
你的表设计的有问题怪不得大家都看不懂,我想这样或许可以:

select * from (select 日期,合约号,订单号,坯布,价格 from 主表 A LEFT JOIN 从表 B ON A.日期=B.日期 where a.坯布=b.坯布) temp1 left join 从表 c on c.坯布=temp1.坯布 where temp1.价格 is null and ..........................
 
是这样的,主表是工作人员录入的数据,五个从表都是电子表格导入的数据,主表要到从表中找数据,个人觉得经常搞数据的人应该都会碰到这种情况,只不过我是第一次无从下手,看了tandxu写的觉得应该可以,还没试,不管怎样先谢谢各位!
 
tandxu,完全正确,结贴
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部