只需寻找下载了AdventureWorks数据并对其进行查询的人。
我正在寻找可以解释标价和单价之间差异的人。
我以listprice = unitprice过滤了产品编号749,并将其出售给客户的时间达到了83%。
我做了一些挖掘,看下面的查询是否有折扣等,但没有给出答案。有什么我想念的吗?
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
;
答案 0 :(得分:0)
这确实是一个会计问题。没有任何其他属性的标价通常是到目前为止的“当前”价格。该值通常会随时间变化。当您出售(或购买)某物时,您将捕获每个出售商品的价格(以及其他信息)以及每个出售的详细信息-这是您在SOD表中找到的价格。为什么?出于非常重要的会计原因。
因此,不-您什么都没有错过。顺便说一句-您是否注意到一个名为ProductListPriceHistory的表?再说一遍-您看到的区别是当前(或“现在”)事实与历史事实。
最后,不要指望示例数据库就其包含的所有信息而言是完全一致的。构建示例数据库是为了演示sql server的各种功能并用作学习平台。 FWIW这个数据库已经过时了。 MS已开发了WorldWideImporters作为替代产品。