SQL: convertir et calculer le montant en négatif en fonction de la valeur dans une autre colonne

J'essaye d'écrire un script qui returnnera les totaux de chk_amount par compagnie et un grand total. Le problème que j'ai est de savoir si le chèque est vide puis le returnner comme un montant de crédit, sinon le returnner tel quel. Toutes les valeurs de chk_amount sont positives.

J'obtiens une erreur que void n'est pas valide dans la list de sélection, car il n'est pas contenu dans une fonction d'agrégat ou dans la clause GROUP BY. Aucune suggestion? Tout ce que je voudrais sur la sortie est company_name et montant.

Voici le code;

SELECT company_name = CASE GROUPING(company_name) WHEN 1 THEN 'Total' ELSE company_name END, CASE WHEN void = 'Y' THEN FORMAT(sum(chk_amount * (-1)), 'C', 'en-us') ELSE FORMAT(sum(chk_amount), 'C', 'en-us') END AS amount from payments INNER JOIN company_list on payments.company_no = company_list.company_id where CONVERT( varchar(10),date_last_modified,101) = '1/13/2016' Group by ROLLUP(company_name) 

Merci d'avance!

Vous aurez besoin d'append void au groupe de cette façon -> Grouper par ROLLUP (nom de la société, void)

 SELECT CASE GROUPING(company_name) WHEN 1 THEN 'Total' ELSE company_name END As Company_Name , FORMAT(SUM(chk_amount * CASE WHEN void = 'Y' THEN -1 ELSE 1 END), 'C', 'en-us') As amount FROM payments INNER JOIN company_list on payments.company_no = company_list.company_id WHERE CAST(date_last_modified As Date) = '2016-01-13' GROUP BY ROLLUP(company_name)