首页 新闻 会员 周边

sqlserver 查询临近时间的纪录

1
[已解决问题] 解决于 2018-03-13 11:57

有两个表 

A表 有 单据时间,商品

单据时间 商品
2018-3-9 12:00 iphone7
2018-3-9 12:30 iphone7
2018-3-9 12:50 iphone7

B表 有 商品 单价 时间

商品 单价 时间
iphone7 1 2018-3-9 11:00
iphone7 2 2018-3-9 12:15
iphone7 3 2018-3-9 12:35

然后期待得到 根据单据时间来匹配到“商品对应价格”

比如“12:00”设置了个1块钱,“13:00”设置了2块钱,在12点后有个单据产生,那么就取12点的价格1块钱

例如上面的A、B表数据  期待得到的结果是:

单据时间 商品 促销价
2018-3-9 12:00 iphone7 1
2018-3-9 12:30 iphone7 2
2018-3-9 12:50 iphone7 2

 那么问题来了,你们会怎么写这个查询?

**************的主页 ************** | 初学一级 | 园豆:124
提问于:2018-03-12 18:11
< >
分享
最佳答案
1

如果是我的话,我应该会这么做。

select A表.单据时间,A表.商品,B表.促销价 from A表,B表

where (B表.单据时间==( select  max(单据时间) 

from B表 where B表.单据时间<= A表.单据时间 ))

我的sql不是很熟悉,上面大概能看出个思路。你试试?

奖励园豆:5
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-03-13 10:50

嗯 明白你的大概思路

只是你上面那个条件 B表.单据时间=  就已经把查询结果限制了

************** | 园豆:124 (初学一级) | 2018-03-13 10:53

@**************: 我试了一下。应该是对的。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-13 11:24

@Shendu.cc: 嗯嗯 看错了 哈哈 感谢

************** | 园豆:124 (初学一级) | 2018-03-13 11:57

@**************: 不客气

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-13 12:12
其他回答(1)
0

select 单据时间,商品,促销价 from A表,B表
where A表.单据时间=time and A表.商品=B表.商品

wyl1483061559 | 园豆:202 (菜鸟二级) | 2018-03-13 10:01

就你这个限制条件: A表.单据时间=time

估计就没匹配的数据了

大概是这样的场景 比如一个手机在一天内不同时间点都有不同的价格浮动  所以设置不同时间点对应这个商品对应的价格

然后在查询报表的时候  根据报表的时间来查询符合当天时间点后有符合的哪个价格

比如设置了时间点 12:00 100块,12:30 200块  那么有一个销售记录 是在12:25产生的 那么 对应的价格应该是100块

支持(0) 反对(0) ************** | 园豆:124 (初学一级) | 2018-03-13 10:05

那你把time条件设为一个区间就行了

支持(0) 反对(0) wyl1483061559 | 园豆:202 (菜鸟二级) | 2018-03-13 10:16

@wyl1483061559: 还是不好取到对应的价格  每一个销售记录(销售的时间) 都能取到一个设置的价格(设置时间)

而一天中某个商品可能设置n次价格 取接近的时间

支持(0) 反对(0) ************** | 园豆:124 (初学一级) | 2018-03-13 10:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册