2017-08-11 4 views
0
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 

La condition de cas est toujours tenue False et elle entre dans else même après que les données soient présentes dans la base de données qui vérifie la condition True.cas où avec plusieurs conditions dans mysql

+0

pouvez-vous donner un exemple de jeu de données où cela devrait être vrai mais faux? –

+0

mettre à jour votre question ajouter votre table scheda .. un échantillon de données approprié et le résultat attendu ,, – scaisEdge

Répondre

0

Je suppose que vous voulez appliquer votre test à chaque ligne de base de données, et non à chaque rangée de résultats. Si oui, vous devez déplacer le cas dans la somme:

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