有两个表
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 |
那么问题来了,你们会怎么写这个查询?
如果是我的话,我应该会这么做。
select A表.单据时间,A表.商品,B表.促销价 from A表,B表
where (B表.单据时间==( select max(单据时间)
from B表 where B表.单据时间<= A表.单据时间 ))
我的sql不是很熟悉,上面大概能看出个思路。你试试?
嗯 明白你的大概思路
只是你上面那个条件 B表.单据时间= 就已经把查询结果限制了
@**************: 我试了一下。应该是对的。
@Shendu.cc: 嗯嗯 看错了 哈哈 感谢
@**************: 不客气
select 单据时间,商品,促销价 from A表,B表
where A表.单据时间=time and A表.商品=B表.商品
就你这个限制条件: A表.单据时间=time
估计就没匹配的数据了
大概是这样的场景 比如一个手机在一天内不同时间点都有不同的价格浮动 所以设置不同时间点对应这个商品对应的价格
然后在查询报表的时候 根据报表的时间来查询符合当天时间点后有符合的哪个价格
比如设置了时间点 12:00 100块,12:30 200块 那么有一个销售记录 是在12:25产生的 那么 对应的价格应该是100块
那你把time条件设为一个区间就行了
@wyl1483061559: 还是不好取到对应的价格 每一个销售记录(销售的时间) 都能取到一个设置的价格(设置时间)
而一天中某个商品可能设置n次价格 取接近的时间