【发布时间】:2014-09-29 15:40:02
【问题描述】:
所以基本上我要做的是为我们的商店生成一份报告。我们有一个事件报告网站,员工可以在其中报告发生在我们任何一家商店的事件。因此,在我试图生成的一般报告中,我想显示我们拥有的每家商店(五家商店)的详细信息。这将包括商店的名称、事件数量、最早的事件日期、最新的事件日期,然后是每家商店最常发生的事件类型。
SELECT Store.Name AS [Store Name], COUNT(*) AS [No. Of Incidents], Min(CAST(DateNotified AS date)) AS [Oldest Incident], Max(CAST(DateNotified AS date)) AS [Latest Incident],
( SELECT TOP 1 IncidentType.Details
FROM IncidentDetails
INNER JOIN Store ON IncidentDetails.StoreID = Store.StoreID
INNER JOIN IncidentType On IncidentDetails.IncidentTypeID = IncidentType.IncidentTypeID
Group By IncidentType.Details, IncidentDetails.StoreID
Order By COUNT(IncidentType.Details) DESC) AS [Most Freqeuent Incident]
FROM IncidentDetails
INNER JOIN Store ON IncidentDetails.StoreID = Store.StoreID
INNER JOIN IncidentType On IncidentDetails.IncidentTypeID = IncidentType.IncidentTypeID
GROUP BY Store.Name
为了清楚起见,IncidentDetails 表存储有关事件的所有详细信息,包括事件发生在哪个商店、事件类型、时间/日期等。 虽然这样做是它为每家商店提供了 5 行,但每行的 [最常见事件] 值都是相同的。基本上,它获取整个表的最频繁事件值,无论它来自哪个商店,然后为每个商店显示该值,即使不同的商店有不同的列值。
我一直在尝试解决这个问题,但一直没能解决:-(
【问题讨论】:
标签: sql