一種選擇,是有條件的聚合....
SELECT SUM(IF(f.Sponsor ='True',CAST(CAST(Amount AS float) AS INT),0)) AS TotalSponsor
, SUM(IF(f.StudentLoan='True',CAST(CAST(Amount AS float) AS INT),0)) AS TotalLoan
FROM Fees f
WHERE f.Sponsor = 'True'
OR f.StudentLoan = 'True'
的IF()函數計算所述第一參數作爲布爾值,如果它的計算結果爲TRUE,它返回第二個參數,否則返回第三個參數。
你可以在地方,如果等效行爲的使用CASE表達式...
SUM(CASE WHEN somecondition THEN somevalue ELSE 0 END)
或者,你可以在外部查詢的SELECT列表中使用sbqueries,是這樣的:
SELECT (SELECT SUM(CAST(CAST(Amount AS float) AS INT))
FROM Fees
WHERE(Sponsor = 'True')
) AS TotalSponsor
, (SELECT SUM(CAST(CAST(Amount AS float) AS INT))
FROM Fees
WHERE(StudentLoan = 'True')
) AS TotalLoan
或者,你可以使用查詢作爲行內觀點
SELECT s.TotalSponsor
, l.TotalLoan
FROM (SELECT SUM(CAST(CAST(Amount AS float) AS INT)) AS TotalSponsor
FROM Fees WHERE(Sponsor = 'True')
) s
CROSS
JOIN (SELECT SUM(CAST(CAST(Amount AS float) AS INT)) AS TotalLoan
FROM Fees WHERE(StudentLoan = 'True')
) l