AdventureWorks - 销售价格问题 - 查询 Microsoft SQL 服务器

AdventureWorks - Selling Price Problem - Queries Microsoft SQL Server

只是在寻找下载了 AdventureWorks 数据并对其进行过查询的人。

我正在找人解释标价和单价之间的区别。

我过滤到 productid 749 并且 83% 的时间它以 listprice = unitprice 出售给客户。

我做了一些挖掘,看看是否有任何折扣等,但没有给出以下查询的答案。有什么我想念的吗?

select *
from sales.specialoffer
where SpecialOfferID = 1;

select SOH.customerID, 

    SOH.orderdate, 
    pp.listprice, 
    sod.unitprice, 
    sod.ProductID,  
    sod.SpecialOfferID, 
    SOD.UnitPriceDiscount, 
    sr.SalesReasonID,sr.name, 
    sr.ReasonType 
from sales.SalesOrderHeader SOH
inner join sales.SalesOrderDetail SOD
    on soh.SalesOrderID = sod.SalesOrderID
inner join production.Product PP
    on SOD.ProductID= PP.ProductID
left join sales.SalesOrderHeaderSalesReason SOHSR
    on soh.SalesOrderID = sohsr.SalesOrderID
left join sales.SalesReason SR
    on  SOHSR.SalesReasonID = SR.SalesReasonID
where standardcost >0
and PP.listprice != sod.unitprice
and pp.productid = 749
    ;

这真是一道会计题。没有任何其他属性的标价通常是 "current" 目前的价格。该值通常会随时间变化。当您出售(或购买)某物时,您会捕获每件已售出商品的价格(以及其他信息)以及每笔销售的详细信息——这是您在 SOD table 中找到的价格。为什么?出于非常重要的会计原因。

所以不 - 你没有遗漏任何东西。顺便说一句 - 您是否注意到一个名为 ProductListPriceHistory 的 table?再次重申 - 您看到的差异是当前(或 "now")事实与历史事实。

最后,不要指望示例数据库在其包含的所有信息方面完全一致。构建示例数据库是为了演示 sql 服务器的各种功能并用作学习平台。 FWIW 这个数据库已经过时了。 MS 开发了 WorldWideImporters 作为替代品。