【问题标题】:case when with multiple conditions in mysqlmysql中有多个条件的情况
【发布时间】:2017-08-11 05:02:14
【问题描述】:
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。

【问题讨论】:

  • 你能举一个数据集的例子,它应该是真的但发生的是假的吗?
  • 更新您的问题,添加您的表格计划 .. 适当的数据样本和预期结果,,

标签: mysql case-when multiple-conditions


【解决方案1】:

我怀疑您的意思是将测试应用于每个数据库行,而不是每个结果行。如果是这样,您需要将案例移入总和:

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

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多