mysql - 如何创建合并重复主键的 SELECT

标签 mysql sql select group-by sum

我正在执行一个如下所示的查询:

SELECT a.transactionID,a.customerID,b.value      
        FROM adjustments a 
                INNER JOIN change b 
                        on  a.transactionID = b.transactionID 
                        and a.event_date    = b.event_date 
                        and a.event_id      = b.event_id 
        WHERE comment LIKE 'TRANSFER'
        ORDER BY a.transactionID;

此查询带来以下结果:

    transactionID | customerID | value
   ------------------------------------     
    TRANSFER-001  |    CUSTA   | -200
    TRANSFER-001  |    CUSTB   |  200
    TRANSFER-002  |    CUSTC   | -150
    TRANSFER-002  |    CUSTD   |   0
    TRANSFER-003  |    CUSTA   |   0
    TRANSFER-003  |    CUSTC   |  150

我需要更改此查询以生成一个列表,该列表忽略那些相同 transactionIDvalue 总和为 0 和此外,将 customerID 和值分组如下:

   transactionID | customerID_A | value_A | customerID_B | value_B
 ------------------------------------------------------------------     
    TRANSFER-002 |    CUSTC     |   -150  |    CUSTD     |    0
    TRANSFER-003 |    CUSTA     |      0  |    CUSTC     |  150

您能就如何解决这个问题给出任何建议吗?

最佳答案

试试这个:

SELECT * FROM (
SELECT a.transactionID,a.customerID,b.value      
    FROM adjustments a 
    INNER JOIN change b 
                    on  a.transactionID = b.transactionID 
                    and a.event_date    = b.event_date 
                    and a.event_id      = b.event_id 
    WHERE comment LIKE 'TRANSFER'
)M
GROUP BY transactionID,customerID,value
HAVING SUM(value) <> 0
ORDER BY transactionID;

关于mysql - 如何创建合并重复主键的 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39374453/

相关文章:

sql - 优化 SQL 查询

php - 如何使用数组 "echo"中的记录用于另一个 php select

php - 拉拉维尔 : change the contents of the variable with the database field

MySQL:在插入期间重新使用自动增量

php - 将 'selected' 分配给多个选择元素的选项

mysql - 在mysql SELECT查询中组合多个where条件

c++ - select() 没有获取标准输入

mysql - 如果一列不为空,如何排除具有相同 id 的所有行

sql - 运行合并到查询时出现 ORA-30926 错误

mysql - SQL Server 如何创建带空格的列名