当总计为正数时将订单计为“订单”,但当总计为负数时计为“退货”
Posted
技术标签:
【中文标题】当总计为正数时将订单计为“订单”,但当总计为负数时计为“退货”【英文标题】:Count Orders as "Orders" when total is postive, but as "Returns" when total is negative 【发布时间】:2021-03-24 15:32:22 【问题描述】:我正在处理一个查询以跟踪生产力。它先按天,然后按销售代表。例如:
Monday Tuesday
Rep 1
Orders:
Total Items:
Total Sales$:
Rep 2
Orders:
Total Items:
Total Sales$:
Rep 3
Orders:
Total Items:
Total Sales$:
目前我有一个查询可以执行此操作,但它只是总订单数,它不会在订单和退货之间分解。所以可能有 4 个“订单”和 1 个“订单”,其中该订单的总数为负数,应该算作“退货”,但它与“订单”分组,因此它会输出 5。这就是我想要的报告查看:
Monday Tuesday
Rep 1
Orders:
Returns:
Total Items:
Total Sales$:
Rep 2
Orders:
Returns
Total Items:
Total Sales$:
Rep 3
Orders:
Returns:
Total Items:
Total Sales$:
这是我目前将所有“订单”组合在一起的查询:
SELECT
mh.Date,
ctls.SalesRep,
COUNT(DISTINCT mh.Orders) as "Orders",
SUM(md.simd1_TotalItems),
SUM(md.simd1_TotalSales)
FROM c_file c LEFT JOIN simh_file mh on c.SalesRep = mh.SalesRep
LEFT JOIN simd_file md on md.Orders = mh.Orders AND
md.simd_seq = mh.simh_seq
LEFT JOIN ctl_file_s ctls on ctls.SalesRep = mh.SalesRep
WHERE mh.Date >= 20210101
GROUP BY mh.Date, ctls.SalesRep
但我希望能够将“订单”计为销售额为正数的订单,而当订单销售额为负数时,我将计为“退货”。对这样的事情有什么建议吗?
【问题讨论】:
这不是您的查询 :-( 是的:(我明白你为什么这么说,我更改了选择中的名称以使内容更易于阅读,但没有在连接中更改它们:/ 不。这仍然不是您的查询。为什么不简单地粘贴您的查询。 实际上不是:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'FROM c_file c LEFT JOIN simh_file mh on c.SalesRep = mh.SalesRep L' at line 7
你真的不明白我改名了吗?
【参考方案1】:
很简单……一个 CASE 语句就可以解决问题:
SUM(CASE WHEN [sale amount column] > 0 THEN 1 ELSE 0) END As 'Sales'
SUM(CASE WHEN [sale amount column] < 0 THEN 1 ELSE 0) END As 'Returns'
第一个 CASE 语句给你一个 1 或 0,这取决于你的销售额是否大于零,这是一次销售,然后 SUM 为你提供该代表的销售总数。
第二个 CASE 语句相同,但金额小于 0,这是您的回报。
【讨论】:
我会试试这个,但我假设“订单”本身需要某种 GROUP。我不是在寻找售出和退货的总金额。如果“订单”的总销售额为正,则为订单。如果总销售额为负数,则为“退货”。以上是关于当总计为正数时将订单计为“订单”,但当总计为负数时计为“退货”的主要内容,如果未能解决你的问题,请参考以下文章