0
我正在撰写一个查询,报告有关某个位置的信息,包括该位置发生的班级总数以及注册的参加者总数这些类。我需要一行结果。选择这些项目的项目计数和所有子项的计数
我正在寻找最有效和/或最可读的方式来执行此查询。
,我已经拿出干净的查询如下:
SELECT Location.Id AS LocationId,
--additional columns from location or joined tables...
ClassStatistics.TotalClasses,
ClassStatistics.TotalRegistrants
FROM Locations AS Location
OUTER APPLY
(
SELECT
COUNT(*) AS TotalClasses,
SUM(TotalRegistrantsInClass) AS TotalRegistrants
FROM
(
SELECT
Class.Id AS ClassId,
COUNT(*) AS TotalRegistrantsInClass
FROM
Classes AS Class
LEFT OUTER JOIN
Attendees AS Attendee
ON
Attendee.ClassId = Class.Id
WHERE
Class.LocationId= Location.Id
GROUP BY
Class.Id
) AS AttendeeTotalsByClass
) AS ClassStatistics
WHERE
Location.Id = 1
是这种在实践中查询可以接受的,或者有我错过了一些魔法使之更有效率?
这个查询真的有效吗?它从这个内部查询中返回两列:columnClassId + TotalRegistrantsInClass:'SELECT Class.Id AS ClassId,COUNT(*)AS TotalRegistrantsInClass FROM',但外部查询引用COUNT(*)AS中的NumberOfRegistrants AS TotalClasses,SUM(NumberOfRegistrants) AS TotalRegistrants'?这是一个错误,它无法解析。 – krokodilko
你说得对,我在外面申请了一个错字。这个例子已经被纠正了。 – StrykerJW