加入在 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 的总数。
SELECT SUM(CASE WHEN tag='D' THEN value ELSE 0 END)
- SUM(CASE WHEN tag='C' THEN value ELSE 0 END)
FROM test
你可以试试 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;
我的数据看起来像,
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 的总数。
SELECT SUM(CASE WHEN tag='D' THEN value ELSE 0 END)
- SUM(CASE WHEN tag='C' THEN value ELSE 0 END)
FROM test
你可以试试 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;