select amount,sid,
CASE
WHEN force_status=1 THEN select sum(amount) as amount,sid FROM(select amount-force_amount as amount,sid from lease_order WHERE force_status=1 and `sid` IN (7,19)) as temp GROUP BY sid
else 0 end as amount
from order;
我有一个表order
,当字段force_status=1
时则使用force_amount-amount
差额进行累加,并对sid
进行分组统计,当字段force_status!=1
,则使用amount
统计并sid
分组。
如果我单独执行
select sum(amount) as amount,sid FROM(select amount-force_amount as amount,sid from order WHERE force_status=1 and `sid` IN (7,19)) as temp GROUP BY sid
则没有问题,会显示如下信息
amount sid
1.04 7
0.03 19
当使用CASE WHEN
则报错,望大神能帮我抽空看看是哪里出问题了。最终效果需要实现成
amount sid
2.03 8
0.03 19
8.03 31
9.13 20
这样效果
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.