mysql - 合并数据,特定条件下除外

标签 mysql sql

我有以下结果(临时表):

Product  Side(buy/sell)  TotalQuantity  AverageWeightedPrice  Cost
Prod1    1               100            120                   12,000
Prod1    2               -50            130                   -6,500
Prod2
Prod2

对于多种产品,依此类推。

我将其合并到(使用 groupby):

Product  Side(buy/sell)  TotalQuantity  AverageWeightedPrice  Cost
Prod1    1               50             110                   5,500
Prod2

我想要合并结果,除非有某些条件:

  1. 当第 1 面和第 2 面的数量相同时。合并数量将为 0,我将无法再计算 AverageWeightedPrice。
  2. 当合并数量 = 0 时,另一个条件是当 TotalQuantity 和 Cost 为倒数时,即当 Quantity 为正且 Cost 为负时(以及当 Quantity+ 和 Cost- 时)

如果是某些条件,我想返回未合并的数据。

我无法同时排除合并数据和未合并数据。

最佳答案

这并不是 SQL 真正擅长的事情。

完全有可能使用纯 sql 生成此结果,但解决方案非常复杂,如果您有任何其他选项,则不应这样做,因为 sql 不提供对此类复杂任务的任何优化,并且语法可以很难掌握。将来维护查询也可能是一项艰巨的任务。

在这种情况下,您应该仅使用 sql 来获取数据,然后使用执行查询的任何编程语言或应用程序对其进行格式化(合并)。

关于mysql - 合并数据,特定条件下除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294005/

相关文章:

MySQL - 在选择中包含许多 case 语句的查询非常慢

sql - 如何检查特定表上是否启用了更改跟踪

等同于SQL Server OFFSET

MySql:复合唯一键

mysql - 将数据从 S3 加载到 amazon RDS/SQL

mysql - 在MySQL中使用多个数据集作为过滤器获取过滤后的数据

mysql - 如何在 MySQL CLI 客户端中重置查询

sql - 在存储过程中向表中插入常量值

sql - BigQuery 在 SELECT 中对多个字符串列的 CONCAT 进行排序

mysql - 使用 SUM 进行分组