mysql - 加入未在 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,则查询不会返回任何值,但我希望结果为 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
推荐阅读
- android - 我得到一个提示,声明 'build' , 'initstate', 'dispose', loadModel' 没有被引用。我应该怎么办?
- jira - 我们如何使用 Jira 测试上传 Jira 产品
- javascript - 一些 WinRT 功能在 Xbox 上失败,但在 Windows 10 上没有
- javascript - 在 Dash 中为悬停跟踪图像创建客户端回调(修订)
- excel - 需要将索引公式切换到 VBA 以允许我返回真正的空白
- google-apps-script - Classroom.Courses.CourseWork.patch
- python - 检查哪些可选参数提供给函数调用
- python - Python Pandas 当我尝试在现有数据框中添加一列时,我的新列不正确
- python - 如何让这个网络爬虫只打印歌曲的标题?
- ios - VStack 扩展了它的内容布局。是否可以更改 VStack 的分布?