加入在 mysql 中没有 return 预期结果

join does not return expected result in mysql

我的数据看起来像,

id  tag value
1   C   2000
1   C   2000
2   C   2000
1   D   1500
1   D   1200
3   D   2500

我有一个要求,我应该根据标签 sum(D)- sum(C)

获得净值

我的查询,

 select 'C' as tag,t1.Debit - t.Credit as result from
   (SELECT `tag` , sum(value) as Credit
    FROM
        test
    WHERE
        tag = 'C' group by `tag` ) t
    join (
         SELECT `tag` , sum(value) as Debit
    FROM
        test
    WHERE
        tag = 'D' group by `tag`
)t1;  

给出的结果为,

tag result
C   -800 -- (5200 - 6000)

根据以上数据得出的正确结果。

然而,所有标签都应该是 D 查询 returns 没有值,但我希望结果为 11200,这是 D 的总数。

dbfiddle

SELECT   SUM(CASE WHEN tag='D' THEN value ELSE 0 END)
       - SUM(CASE WHEN tag='C' THEN value ELSE 0 END)
FROM test

fiddle

你可以试试 this:

select sum(CASE WHEN tag='D' THEN value ELSE 0 END)-sum(CASE WHEN tag='C' THEN value ELSE 0 END) as val from test;

如果您只打算使用 'D' 或 'C' 作为标签。

然后

select sum(CASE WHEN tag='D' THEN value ELSE -value END) as val from test;