我有这些表格:
表1 :
date | idcurrency | total
2011-10-11 | 1 | 100
2011-10-14 | 1 | 500
2011-10-12 | 2 | 200
2011-11-01 | 2 | 100
表2
idcurrency | value | date
1 | 200 | 2011-10-09
1 | 350 | 2011-10-15
2 | 200 | 2011-10-09
2 | 250 | 2011-10-20
我需要根据table 1
中字段总计与table 2
字段值的乘积来计算新总计。
Table 2
保持对货币值的更改并且不是日期连续,所以我无法弄清楚如何加入这些表来实现我的目标
更改设计
我在考虑更改table2的设计,添加一个新字段来保存货币值范围的最终日期,如下所示:
idcurrency | value | start_date | end_date
1 200 2011-10-09 2011-10-14
1 350 2011-10-15 2011-12-14
2 200 2011-10-09 2011-10-19
2 250 2011-10-20 2011-12-14
然后,我可以在不使用“外部申请”的情况下加入table1和table2,但现在我正在尝试进行查询以添加此新字段
谢谢!
答案 0 :(得分:1)
您可以使用outer apply
子查询来搜索货币的最新值:
select t1.*
, last_value.Value * t1.total
from Table1 t1
outer apply
(
select top 1 value
from Table2 t2
where t2.idcurrency = t1.idcurrency
and t2.date <= t1.date
order by
t2.date desc
) last_value
答案 1 :(得分:0)
如下所示(我没有测试过):
SELECT *,total*value as Total
FROM Table1 INNER JOIN (SELECT idCurrency,max(date) as value
GROUP BY idCurrency,date)
ON table1.idcurrency = table2.currency