我有两个表:表SAMPLES
,其中包含样本,示例代码和样本日期,表CODES
包含示例代码,价格和from_date,其中包含日期。价格适用。我需要加入这两个表并根据样本日期返回正确的价格。
CODES
SEQ_NUM NAME VERSION FROM_DATE PRICE
1 CODE_A 1 2010-03-01 00:00 90
2 CODE_A 2 2011-10-07 00:00 95
3 CODE_A 3 2012-05-08 00:00 99
4 CODE_A 4 2015-06-17 00:00 110
5 CODE_B 1 2012-04-01 00:00 10
6 CODE_B 2 2014-07-07 00:00 20
样本
SAMPLE_NUMBER SAMPLE_ID SAMPLE_CODE SAMPLE_DATE
1 ABC12 CODE_A 2010-04-01 00:00
2 ABC13 CODE_A 2015-10-07 00:00
3 ABC14 CODE_A 2012-06-09 00:00
4 ABC15 CODE_B 2014-10-12 00:00
我可以通过以下方式获得特定样品的正确价格:
select MAX(s.SAMPLE_NUMBER), MAX(c1.PRICE_COLLECT), MAX(c1.NAME)
from CODES c1
left join CODES c2 on (c1.SEQ_NUM = c2.SEQ_NUM and c1.VERSION < c2.VERSION)
inner join sample s on s.SAMPLE_CODE = c1.NAME
where c2.SEQ_NUM is null
and c1.FROM_DATE < s.SAMPLED_DATE
and s.SAMPLE_NUMBER = 3
结果
s.SAMPLE_NUMBER c1.PRICE c1.NAME
3 99 CODE_A
但我希望得到整个结果集:
s.SAMPLE_NUMBER c.PRICE c.NAME
1 90 CODE_A
2 110 CODE_A
3 99 CODE_A
4 20 CODE_B
有没有办法在单个SQL语句中执行此操作?