【问题标题】:SQL Left Join on Criteria between dates? [duplicate]SQL Left Join on Criteria between dates? [复制]
【发布时间】:2018-10-17 14:03:46
【问题描述】:

我正在编写一份报告,以确定这些物品的平均售价与历史上这些物品的标价的比较。

我可以从价值输入表中得到所有的实际销售价格。

系统“标价”在销售价格表中。

棘手的部分是价格会发生变化,因此给定商品的标价会根据商品的销售日期而有所不同。因此,为了准确报告这一点,我需要确定标价,因为它是在销售日期。

幸运的是,销售价格表有价格的开始日期和结束日期。

所以我试图弄清楚如何将销售价格表加入到价值输入表中,其中商品的销售日期介于销售价格表中一行的开始日期和结束日期之间

Item No    List Price     Start Date    End Date
1001       $1.00          01-01-18      02-28-18
1001       $1.25          03-01-18      05-31-18
1001       $1.50          06-01-18      08-31-18

商品 1001 于 18 年 1 月 21 日出售 我如何才能以 1.00 美元的价格正确加入?

【问题讨论】:

  • 我们需要样本表数据和预期结果。您能否也向我们展示您当前的查询尝试。

标签: sql sql-server reporting-services


【解决方案1】:

您可以使用以下查询:

select * from table t where '01-21-18' >= t.startdate and '01-21-18' <= t.enddate   and t.item_no = 1001

【讨论】:

    【解决方案2】:

    外部连接应该这样做:

    select
        o.*,
        p.list_price
      from orders o
      left join sales_price p on p.item_no = o.item_no
        and o.sales_date between p.start_date and p.end_date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-06
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2011-06-26
      相关资源
      最近更新 更多