在日期版本上加入两个表

时间:2016-03-21 10:21:00

标签: sql-server

我有两个表:表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语句中执行此操作?

0 个答案:

没有答案