Essayer de faire deux MySQL Calcul basé sur la valeur d'une colonne [fermé]

0

La question

J'ai une instruction select, mais à évaluer, sur une colonne, si elle contient une valeur de 584. Je suis en train de créer une nouvelle colonne de calcul total en multipliant les 3 autres colonnes, si ce n'584 puis calculer basée sur les différentes colonnes

    select CASE `d2c_3_csg_batch_in`.`transactioncode` AS `transactioncode`,
`d2c_3_csg_batch_in`.`site` AS `site`,
`d2c_3_csg_employees`.`lastname` AS `lastname`,
`d2c_3_csg_employees`.`firstname` AS `firstname`,
`d2c_3_csg_employees`.`payrate` AS `payrate`,
`d2c_3_csg_batch_in`.`employeecode` AS `employeecode`,
`d2c_3_csg_batch_in`.`jobcode` AS `jobcode`,
`d2c_3_csg_employees`.`CompanyFrequency` AS `CompanyFrequency`,
`d2c_3_csg_batch_in`.`inputunits` AS `inputunits`,
`d2c_3_csg_transactioncodes`.`multiplier` AS `multiplier`,
`d2c_3_csg_transactioncodes`.`payspacewording` AS `payspacewording`,
        WHEN `d2c_3_csg_batch_in`.`transactioncode` = '584' THEN `d2c_3_csg_batch_in`.`inputunits` AS `total`
        WHEN `d2c_3_csg_batch_in`.`transactioncode` <> '584' THEN `d2c_3_csg_batch_in`.`inputunits` * `d2c_3_csg_employees`.`payrate` * `d2c_3_csg_transactioncodes`.`multiplier` AS `total` 
     END
from ((`d2c_3_csg_transactioncodes` join `d2c_3_csg_batch_in` on(`d2c_3_csg_transactioncodes`.`code` = `d2c_3_csg_batch_in`.`transactioncode`)) 
left join `d2c_3_csg_employees` on(`d2c_3_csg_batch_in`.`employeecode` = `d2c_3_csg_employees`.`employeenumber`)) 
where `d2c_3_csg_batch_in`.`flag` = 'ADD' and `d2c_3_csg_batch_in`.`prp` = 'Y' 
group by `d2c_3_csg_batch_in`.`employeecode`,`d2c_3_csg_batch_in`.`transactioncode` 
order by `d2c_3_csg_batch_in`.`employeecode` desc,`d2c_3_csg_batch_in`.`transactioncode`

calculated-columns case mysql
2021-10-25 11:03:58
1

La meilleure réponse

0

Essayez d'utiliser la Somme si e.g

SUM(if (q1.bill = 584,q1.bill - q1.payment,0))AS bal,
SUM(if (q1.bill != 584,q1.payment - q1.bill  ,0))AS advpay,

t1 est l'alias de la table. les autres champs sont imaginaires

Point de correction: Lors de l'utilisation de cas, vous faites de cette façon;

CASE WHEN `d2c_3_csg_batch_in`.`transactioncode` = '584' 
         THEN `d2c_3_csg_batch_in`.`inputunits` 
     WHEN `d2c_3_csg_batch_in`.`transactioncode` <> '584' 
         THEN `d2c_3_csg_batch_in`.`inputunits` * `d2c_3_csg_employees`.`payrate` * `d2c_3_csg_transactioncodes`.`multiplier` 
END AS `total`    -- an alias must be there!
 
2021-10-25 11:51:04

Merci!!!!!! les deux options travaillé... j'ai fait ce qui a fonctionné à 100%, mais ensuite utilisé votre deuxième suggestion sum(if(d2c_3_csg_batch_in.transactioncode` = 584,d2c_3_csg_batch_in.inputunits,0)) + somme(si(d2c_3_csg_batch_in.transactioncode <> 584,d2c_3_csg_batch_in.inputunits * d2c_3_csg_employees.payrate * d2c_3_csg_transactioncodes.multiplier,0)) COMME total `
GURU mcewan.marriott

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................