CASE WHEN (D.BUYQ>0 AND D.SELLQ>0 AND D.series_expiry='2050-01-01') then
sum(D.stt_INTRA_buy*least(D.buyq,D.SELLQ)*D.buyavg)+sum(D.stt_buy*(D.buyq-least(D.buyq,D.SELLQ))*D.buyavg)
ELSE
sum(D.stt_buy*D.buyq*D.buyavg)
END) as xsttbuy
case 条件始终为 False,即使数据库中存在满足 True 条件的数据,它也会进入 else 状态。
最佳答案
我怀疑您的意思是将测试应用于每个数据库行,而不是每个结果行。如果是这样,您需要将案例移至总和中:
SUM(
CASE WHEN (D.BUYQ>0 AND D.SELLQ>0 AND D.series_expiry='2050-01-01') THEN
D.stt_INTRA_buy*LEAST(D.buyq,D.SELLQ)*D.buyavg)+D.stt_buy*(D.buyq-LEAST(D.buyq,D.SELLQ))*D.buyavg
ELSE
D.stt_buy*D.buyq*D.buyavg
END
) AS xsttbuy
关于mysql - mysql 中有多个条件的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45627300/