查询以显示何时在销售订单中使用折扣行项目,但仍显示所有销售订单
Posted
技术标签:
【中文标题】查询以显示何时在销售订单中使用折扣行项目,但仍显示所有销售订单【英文标题】:Query to show when the discount line item is used in a sales order, but still display all sales orders 【发布时间】:2021-01-20 12:40:54 【问题描述】:我正在尝试运行一个显示(为简单起见)的查询:CompanyID、CompanyName、SalesOrderID、Discount Amount、SalesOrder Total,在这种情况下,获取折扣金额的唯一方法是查询商品我们用于添加销售团队的折扣。如果销售订单中不存在,我想返回 null 或 0,或者如果使用它,则返回值(应用于折扣的美元金额)。我唯一知道的是使用一个简单的 where 子句,它排除了在项目详细信息中没有该项目的销售订单。我可以访问的表是 CompanyTable、包含总金额但不包含折扣金额的 SalesOrder 表,以及显示 Salesorder 中项目的 SalesDetail 表。
任何帮助将不胜感激,我觉得有一个功能可以做到我只是迷路了。
【问题讨论】:
请提供样本数据、所需结果和适当的数据库标签。 我希望得到的是 CompanyName、SalesOrderID、SalesOrderTotal、DiscountAmount。前三个是容易抓取的字段,最后一个我必须通过 SalesOrderDetail 表来查找是否使用了折扣项目。 【参考方案1】:如果我理解正确,您可以使用条件聚合。目前尚不清楚您所说的“价值”是什么意思。但例如,您可以使用以下方式获取订单的总金额,然后是商品的总金额:
select salesorderid, sum(price) as total_price,
sum(case when itemid = ? then price end) as item_total
from orderlines
group by salesorderid;
【讨论】:
这是我用过的,它奏效了。非常感谢你的帮助。记住任何人在阅读以列出您在 Group By 中的所有列!选择 l.LocationName, s.CreatedDated, s.Total, sum(case when sd.ItemID = '0943049584958948549' then Dollar Else 0 End) as Discount from QBIntegration.SalesOrder s with (nolock) Join Location.Location l on s.BillToLocationID = l.locationid 在 s.SalesOrderID 上加入 QBIntegration.SalesOrderDetail sd = sd.SalesOrderID 其中 s.InstallOn 在 '1/1/2020' 和 '12/31/2020' 之间按 LocationName、Total、InstallOn 分组以上是关于查询以显示何时在销售订单中使用折扣行项目,但仍显示所有销售订单的主要内容,如果未能解决你的问题,请参考以下文章
sql 为Oracle编写的SQL代码,显示销售订单行信息。
在 WC 3.0+ 的单个产品页面中显示接近销售价格的折扣百分比