eine Option ist bedingte Aggregation ....
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'
die IF() Funktion wertet das erste Argument als boolean, wenn sie ausgewertet TRUE, gibt das zweite Argument zurück, andernfalls das dritte Argument.
Sie könnten einen CASE-Ausdruck anstelle von IF für gleichwertiges Verhalten verwenden ...
SUM(CASE WHEN somecondition THEN somevalue ELSE 0 END)
Oder Sie sbqueries in der SELECT-Liste einer äußeren Abfrage, so etwas wie diese verwenden:
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
Oder könnten Sie die Abfragen als Inline-Ansichten verwenden
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