一个查询中一个 table 中两个行的 SUM 之间的减法
SUBTRACTION between two SUM of rows in one table in one query
我需要在一个 table 结果中显示所有金额的总和 WHERE description= Add Value; SUM 所有金额 WHERE description= Game Credit Used; SUM 之间的减法增加值 - 使用的游戏积分。 = 所有这些操作仅在一个 table FROM member_transactions WHERE member = '32-185149' 中进行;
我尝试编写此查询:(SQL 不起作用)
测试
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description = 'Add Value'
UNION
SELECT member, description,SUM(amount) AS GameCreditUsed
FROM member_transactions
WHERE member = '32-185149' AND description = 'Game Credit Used';
需要加入SUBTRACTION
SELECT ((SELECT SUM(amount) FROM member_transactions WHERE member = '32-185149' AND description = 'Add Value')
- (SELECT SUM(amount) FROM member_transactions WHERE member = '32-185149' AND description = 'Game Credit Used'))
AS Balance;
我需要这样看 table:
member description Result
32-185149 Add Value 240
32-185149 Game Credit Used 40
200
我需要一个查询来完成所有操作。谢谢!
使用条件聚合:
SELECT member, description,
SUM(CASE WHEN description = 'Add Value' THEN amount ELSE 0 END) as add_value,
SUM(CASE WHEN description = 'Game Credit Used' THEN amount ELSE 0 END) as game_credit_used,
FROM member_transactions
WHERE member = '32-185149' ;
您可以只减去这些值,而不是将它们放在单独的列中,因为您想要差值。
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description IN ('Add Value', 'Game Credit Used')
GROUP BY member, description
最后的总数应该在应用程序上但是如果你真的想要它需要做 UNION
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description IN ('Add Value', 'Game Credit Used')
GROUP BY member, description
UNION
SELECT '' as member,
'total' as description,
SUM(CASE WHEN description = 'Add Value' THEN amount
WHEN description = 'Game Credit Used' THEN -amount
ELSE 0
END
) as total
FROM member_transactions
WHERE member = '32-185149'
GROUP BY member
我需要在一个 table 结果中显示所有金额的总和 WHERE description= Add Value; SUM 所有金额 WHERE description= Game Credit Used; SUM 之间的减法增加值 - 使用的游戏积分。 = 所有这些操作仅在一个 table FROM member_transactions WHERE member = '32-185149' 中进行;
我尝试编写此查询:(SQL 不起作用)
测试
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description = 'Add Value'
UNION
SELECT member, description,SUM(amount) AS GameCreditUsed
FROM member_transactions
WHERE member = '32-185149' AND description = 'Game Credit Used';
需要加入SUBTRACTION
SELECT ((SELECT SUM(amount) FROM member_transactions WHERE member = '32-185149' AND description = 'Add Value')
- (SELECT SUM(amount) FROM member_transactions WHERE member = '32-185149' AND description = 'Game Credit Used'))
AS Balance;
我需要这样看 table:
member description Result
32-185149 Add Value 240
32-185149 Game Credit Used 40
200
我需要一个查询来完成所有操作。谢谢!
使用条件聚合:
SELECT member, description,
SUM(CASE WHEN description = 'Add Value' THEN amount ELSE 0 END) as add_value,
SUM(CASE WHEN description = 'Game Credit Used' THEN amount ELSE 0 END) as game_credit_used,
FROM member_transactions
WHERE member = '32-185149' ;
您可以只减去这些值,而不是将它们放在单独的列中,因为您想要差值。
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description IN ('Add Value', 'Game Credit Used')
GROUP BY member, description
最后的总数应该在应用程序上但是如果你真的想要它需要做 UNION
SELECT member, description, SUM(amount)
FROM member_transactions
WHERE member = '32-185149' AND description IN ('Add Value', 'Game Credit Used')
GROUP BY member, description
UNION
SELECT '' as member,
'total' as description,
SUM(CASE WHEN description = 'Add Value' THEN amount
WHEN description = 'Game Credit Used' THEN -amount
ELSE 0
END
) as total
FROM member_transactions
WHERE member = '32-185149'
GROUP BY member