我有查询这需要很长时间才能执行如何删除鲜明的SQL查询
SELECT
cft.ID, cft.Name AS 'CauseArea' , COUNT(DISTINCT e.ID) AS 'Donors',
SUM(CASE WHEN d.DonationType = 1 THEN d.Amount ELSE 0 END) AS 'DonationsForAvarage' ,
SUM(CASE WHEN d.DonationType = 1 THEN d.Amount ELSE 0 END) AS 'EmployeeDonations' ,
SUM(CASE WHEN d.DonationType = 2 THEN d.Amount ELSE 0 END) AS 'MatchedDonations' ,
SUM(CASE WHEN d.DonationType = 1 OR d.DonationType = 2 THEN d.Amount ELSE 0 END) AS 'TotalDonations'
FROM
dbo.Donation d
INNER JOIN
dbo.Employee e ON e.ID = d.Employee
INNER JOIN
CharityProjectDetails cpd ON d.CharityProjectDetails = cpd.ID
INNER JOIN
CharityDetails cd ON cpd.CharityDetails = cd.ID
INNER JOIN
CauseFocusType cft ON cd.CauseFocusType = cft.ID
GROUP BY
cft.ID, cft.Name
所以我注意到DISTINCT
是吃。我想摆脱DISTINCT
- 我该怎么做?
你真的需要'dbo.Employee'在你的查询吗?尝试删除它并使用COUNT(DISTINCT d.Employee)作为'Donors''看看它是否有所作为 – cha
@cha是啊它不需要,但一些捐款没有员工我想摆脱这些 – Gayan