J'ai une table de Bill comme celui-cimatrice/crosstab/requête de pivot dans mySQL
BillNo - 1, ServiceCode -1, NomService - 'test Lab', ItemAmount -30
BillNo -1, ServiceCode - 2, NomService -'Consultation », ItemAmount -70
je besoin d'une sortie comme ceci
projet de loi n -1, total Montant du projet de loi-100, test-30 Lab, Consultation-70, la drogue-0, Misc- 0
Donc, fondamentalement, j'ai besoin du montant de la facture qui est la somme de tous les ItemAmount groupés par BillNo. Ensuite, dans la même rangée, j'ai besoin de distribuer ce montant de la facture aux 4 ServiceNames. Donc 100 se répartit en 30 pour le test en laboratoire et 70 pour la consultation.
Cela m'a donné ce que je veux mais ce n'est pas optimal.
SELECT
BD.BILLNO AS BN,
SUM(BD.ITEMAMOUNT) AS "Bill Amount",
(SELECT SUM(BD.ITEMAMOUNT) FROM BILLDETAILS BD
WHERE SERVICENAME LIKE '%Lab%'
AND BD.BILLNO = BN) AS "Lab",
(SELECT SUM(BD.ITEMAMOUNT) FROM BILLDETAILS BD
WHERE SERVICENAME LIKE '%Consult%'
AND BD.BILLNO = BN) AS "Consultation",
(SELECT SUM(BD.ITEMAMOUNT) FROM BILLDETAILS BD
WHERE SERVICENAME LIKE '%Procedure%'
AND BD.BILLNO = BN) AS "Procedures",
(SELECT SUM(BD.ITEMAMOUNT) FROM BILLDETAILS BD
WHERE SERVICENAME LIKE '%Drugs%'
AND BD.BILLNO = BN) AS "Drugs",
(SELECT SUM(BD.ITEMAMOUNT) FROM BILLDETAILS BD
WHERE SERVICENAME NOT LIKE '%Lab%'
AND SERVICENAME NOT LIKE 'Consult%'
AND SERVICENAME NOT LIKE '%Procedure%'
AND SERVICENAME NOT LIKE '%Drugs%'
AND BD.BILLNO = BN)AS "Miscellaneous"
FROM BILLDETAILS BD
GROUP BY BD.BILLNO
Comment puis-je améliorer cette requête mySQL?
Merci. Chak.
Je suppose que je besoin de quelque chose comme une requête pour un rapport de vieillissement - si elle est comprise entre 30 et 60 jours, il vient dans la colonne de 60 jours etc. – Chakra
'entre 30 et 60 puis" 60 jours "' en tant que nom_colonne' – Sadat