sql - AdventureWorks - 售价问题 - 查询 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
;
解决方案
这确实是一个会计问题。标价,没有任何其他属性,通常是截至目前的“当前”价格。该值通常会随着时间而改变。当您出售(或购买)某物时,您会获取每件出售商品的价格(以及其他信息)以及每笔销售的详细信息 - 这是您在 SOD 表中找到的价格。为什么?出于非常重要的会计原因。
所以不 - 你没有错过任何东西。顺便说一句 - 您是否注意到一个名为 ProductListPriceHistory 的表?再说一遍-您看到的区别是当前(或“现在”)事实与历史事实。
最后,不要期望样本数据库就其包含的所有信息而言是完全一致的。构建示例数据库是为了演示 sql server 的各种功能并用作学习平台。FWIW 这个数据库已经过时了。MS 开发了 WorldWideImporters 作为替代。
推荐阅读
- javascript - GridView中文本更改的Javascript
- c - 将结构添加到数组中
- android - View.VISIBLE 和 INVISIBLE 不起作用 Kotlin
- terraform - terraform local-exec ausführen
- c# - 组织结构图 - 按经理分组以显示其下的所有员工
- python - Python:如何插值缺失率并绘制插值曲线以比较原始曲线?
- bash - 用于交换文件位置、同名文件的 Bash 脚本
- vbscript - VBscript,对于每个循环和最后的Msgbox
- javascript - 如何使用 setInterval 调用异步函数?
- postman - 从 Postman 集合运行测试时使用 not.eql 时出现断言错误