我有一张这样的桌子:
PARENTREF TRANSTYPE(BIT(1)) DUEDATE(DateTime) TOTAL
2038 0 2015-01-01 1000
2038 1 2015-03-05 500
2039 0 2015-01-01 1000
2040 0 2015-01-01 1000
2041 0 2015-01-01 1000
2040 1 2015-04-07 200
我想要一个
SELECT
查询,对于每个不同的SUM(TOTAL)
从TRANSTYPE=1
中减去SUM(TOTAL)
时返回TRANSTYPE=0
。我还想在一个单独的列中得到PARENTREF
的DUEDATE
当PARENTREF
时。可能只有一个TRANSTYPE=0
与PARENTREF
一起使用,这样就不会有问题。换句话说,我应该得到下表:PARENTREF DUEDATE(DateTime) TOTAL
2038 2015-01-01 500
2039 2015-01-01 1000
2040 2015-01-01 800
2041 2015-01-01 1000
最佳答案
(1-transtype*2)
在1
时是transtype=0
的,在-1
时是transtype=1
的,因此query从total
wheretranstype=1
的值中减去total
的值。transtype=0
忽略max
值,因此只选择不null
值。
select
parentref,
sum((1-transtype*2)*total) as total,
max(if(transtype=0,duedate,null)) as duedate
from tablename
group by parentref
关于mysql - SQL中总和的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27578088/