我有一個比爾表這樣矩陣/交叉/樞軸查詢mySQL中
BillNo - 1,-1 ServiceCode,服務名稱 - '實驗室測試',ItemAmount -30
BillNo -1,ServiceCode - 2,服務名稱-'Consultation」,ItemAmount -70
我需要這樣的
比爾沒有-1,總帳單金額-100,實驗室測試-30,諮詢-70,藥物-0,Misc-輸出0
因此,基本上我需要的是BillNo分組的所有ItemAmount的總和。然後在同一行中,我需要將這個帳單金額分配給4個ServiceNames。所以100分配爲實驗室測試30和諮詢70。
這給了我我想要的,但它不是最優的。
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
我該如何改進這個mySQL查詢?
謝謝。 Chak。
我想我需要這樣的東西老齡化報告的查詢 - 如果它是30到60天之間談到60日列下等等。 – Chakra 2010-07-23 05:29:56
'在30和60之間時,則「60天」爲列名 – Sadat 2010-07-23 08:21:37