【发布时间】:2021-06-09 02:42:22
【问题描述】:
我有两个如下表:
table1
Date ID Price
2014-01-05 B 174.52
2014-02-25 B 181.68
2014-07-28 B 179.82
2014-02-01 C 39.84
2014-07-27 C 42.70
2014-01-30 D 121.63
2014-07-28 D 136.99
table2
Date ID Quantity
2014-01-31 B 100
2014-07-28 B 200
2014-02-01 C 250
2014-07-28 C 250
2014-01-31 D 300
我必须根据日期“2017-07-28”的每个 ID 计算 TotalPrice(价格 x 数量),但条件是:如果给定日期没有可用的价格,则最接近但之前的价格应使用日期。
我尝试了以下查询,但没有给出正确的输出。
select *, (t1.Price * t2.Quantity) as TotalPrice
from tab1(nolock) t1
inner join tab2(nolock) t2 on t1.ID = t2.ID and t1.date = t2.date
where t1.AsOfdate = '2017-07-28'
计算'C'价格应取2014-07-27。
【问题讨论】:
-
另一个
nolock瘾君子——你不应该只在例外情况下使用nolockwilly nilly。考虑以 DDL+DML 的形式提供您的示例数据,以便更轻松地为您提供帮助。 -
请用 DDL、DML 更新您的问题
-
@souvik 并更新您对新样本数据的预期结果,这与您现有的样本数据不匹配。
标签: sql sql-server date tsql